Mysql单表查询技巧一

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导致性能问题

但是当查询和排序的字段是唯一索引时,会通过索引进行查询和排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值