SQL提示就是人为的提示数据库以此达到优化的效果,例如:SELECT SQL_BUFFER_RESUTS *FROM tableName...
这是强制MySQL生成一个临时结果集,只要临时结果集生成后,所有表的lock都被释放。如果查询后需要传输大量数据到客户端,可以借用这种方式,快速的释放表锁。
1.在表查询时,添加use index
提示希望MySQL去参考的索引,但不是一定使用该索引。
上图可以看出来虽然我们用了use index(idx_fk_staff_id)
但查询时还是没有使用index。
在有些情况,我们需要屏蔽其他的index,可以使用ignore index
让其屏蔽某个index,例如:
explain select last_name from actor \G # 这是没有使用ignore index时,可以看到查询时使用了idx_actor_last_name
explain select last_name from actor ignore index(idx_actor_last_name) \G #这是使用了ignore index,是查询时屏蔽掉idx_actor_last_name
3.我们使用force index
强制MySQL使用指定index,例如:
explain select actor_id from actor \G #未使用force index,MySQL默认使用idx_actor_last_name
使用force index
强制MySQL使用某个缩影:
explain select actor_id from actor force index(primary) \G
可以看到这就强制使用primary key作为index对表进行查询。我们在实际工作中结合自身需求,选择合理的index进行对表的操作。