2、应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描selectidfromtwherenumisnull最好不要给数据库留NULL,尽可能的使用NOTNULL填充数据库.备注、描述、评论之类的可以设置为NULL,其他的,最好不要使用NULL。
执行时间是:17.579s
执行时间是:16.966s4.应尽量避免在where子句中使用or来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描案例分析:GRADE_ID字段有索引,QUESTION_TYPE没索引
执行时间是:11.661s优化方案:通过unionall方式,把有索引字段和非索引字段分开。索引字段就有效果了
执行时间是:11.811s但是,非索引字段依然查询速度会很慢,所以查询条件,能加索引的尽量加索引5.in和notin也要慎用,否则会导致全表扫描案例分析注:在mysql数据库中where子句中对索引字段使用in和notin操作符,引擎不会放弃使用索引。
注:在mysql数据库中where子句中对不是索引字段使用in和notin操作符,会导致全表扫描。
领取专属 10元无门槛券
私享最新 技术干货