1. 在where里使用!=或<>,会放弃索引,所以尽量不要这样使用
2. 使用null判断也会使得数据库放弃索引,所以尽量不要这么做,用0来代替
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0
3. in 和 not in也会放弃索引,导致全表搜索
not in可以用not exist代替,in可以用between,and来代替
select num from a where num in(select num from b)
用下面的语句替换:
select num from a where exists(select 1 from b where num=a.num)
4. 不要在where后面添加参数或者进行操作,如
select id from t where num/2=100
应改为:
select id from t where num=100*2