select * from table where 1=1 and line In ('Id0','Id1','Id2')
前提数据量在100万以内!
请各位Sql性能高手帮忙给点方案!谢谢..
索引是当然的!不只是一张表!涉及到三张表的条件过滤!Join连接查询后带条件!三张表一共有20来个字段都可以过滤! 所以我现在就是这样做的
Select tab1.lineId,tab2.line,tab3.line Form tab1
inner join tab2 on tab1.lineId=tab2.lineId
inner join tab2 on tab1.lineId=tab3.lineId
Where tab1.lineId in( Select tab1.lineId From tab1 Where tab1line in('...','...') and tab2lin in ('....') and tab3lin in(...)
)
tab1.lineId上有建索引...
请问:是否Exists效率高一点呢?
可以考虑在line建索引。
同上
你还是在程序里面用缓存。。。
100W建个索引差不多了,你这是小数据量,没必要优化什么
尽量少用子查询,Exists比In的效率高很多
测试过了,效率差不多!几秒钟的样子...