1、在单表查询时,有时为了减少全表扫描可以使用limit限制查询数量提高查询效率
在没有limit的情况下所有查询语句默认会全表扫描,但加了limit后到了数量限制就会停止
2、在建表时,对主键和唯一键,mysql会自动生成唯一索引,查询时直接从索引树上取而不用全表扫,在这些键的字段上查询效率更高
3、使用explain修饰查询语句会显示这个sql语句的查询计划,如下图中SIMPLE表示简单查询没有联表等操作,查t_user表,type为all表示整表扫描const则表示索引上常数复杂度扫描,possible_keys表示可能用到的键,key表示实际用到的键rows字段表示扫描了多少行,filtered表示扫描总行数和满足条件行数的比值

4、当我们使用select * from t_user limit a, b; 这条语句会查询符合条件的第a到b条记录,但是偏移值大小会显著影响查询性能,如下图
这样实现分页会有性能问题,通常实现分页都是通过select * from t_user where id > 上一页最后一条数据id值 limit 20这样


5、order by排序,下面可以看到他的EXTRA字段是using filesort,需要用到外排序,会回表涉及很多磁盘I/O导致性能问题
但是当查询和排序的字段是唯一索引时,会通过索引进行查询和排序


6866

被折叠的 条评论
为什么被折叠?



