1.排除缓存干扰
我们在执⾏SQL的时候,记得加上SQL_No_Cache去跑SQL,这样跑出来的时间就是真实的查询时间了。
例如:select SQL_No_Cache age from db_admin where name =‘张三’
2.用执行计划分析
Explain select 。。。
3.覆盖索引
回表:⽐如⾛B索引并不能直接拿到我们的值,还需要回到主键索引才可以拿到,多了⼀次回表的过程
如果在我们建⽴的索引上就已经有我们需要的字段,就不需要回表了,在电商⾥⾯也是很常⻅的,我们需要去商品表通过各种信息查询到商品id,id⼀般都是主键,可能sql类似这样:select itemId from itemCenter where size between 1 and 6
由于覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使⽤覆盖索引是⼀个常⽤的性能优化⼿段。
4.联合索引
两个或更多个列上的索引被称作联合索引,联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。