语句如下:select * from opinion where resource_id in (select resource_id from da_info where left(da_id,4) = '2007')
解释:我需要查出DA_INFO表中da_id左边4位数是2007的数据中resource_id 字段的值与opinion 表的resource_id 字段值一样的opinion表数据20万行的数据用查询分析器查询时间需要19秒,感觉时间长了,请DX帮忙看看是否是SQL语法书写的问题,有没有其他方法可以提高这句SQL语句的执行效率??
解释:我需要查出DA_INFO表中da_id左边4位数是2007的数据中resource_id 字段的值与opinion 表的resource_id 字段值一样的opinion表数据20万行的数据用查询分析器查询时间需要19秒,感觉时间长了,请DX帮忙看看是否是SQL语法书写的问题,有没有其他方法可以提高这句SQL语句的执行效率??
exists(select 1 from da_info where resource_id= a.resource_id and da_id like '2007%')
resource_id\da_id 都需要建索引
SELECT * FROM OPINION OP
LEFT JOIN ( SELECT RESOURCE_ID FROM DA_INFO WHERE LEFT(DA_ID,4) ='2007' ) DA ON DA.RESOURCE_ID = OP.RESOURCE_ID
--随手敲的不排除有误
select tb.* from
(select resource_id from da_info where left(da_id,4) = '2007') as ta
left join
(select * from opinion) as tb
on ta.resource_id=tb.resource_id
exists(select 1 from da_info where resource_id= a.resource_id and da_id like '2007%')只有
这种写法跟我原来的方法查出来的数据是一样的,其他数据条数都相差多啊?