关于数据库中查询的时候尽量不使用 select * from解释
【摘要】
简单的来理解就是select* 的时候弄不好就容易出错,所以不建议使用select *
更高层次的是下边摘自网络的原因
使用*无法利用index类型的单表查询。 select * from pers...
简单的来理解就是select* 的时候弄不好就容易出错,所以不建议使用select *
更高层次的是下边摘自网络的原因
-
使用*无法利用index类型的单表查询。
select * from person where username = 'test’是不会走二级索引的,只能在聚集索引的那颗B+树上做全表扫描,也就是最慢的一种查询方式。
当建立的是id和name 的两个索引,则会遵循最左前缀原则
select id,name from person where id=12; -
连接查询时,* 无法进入缓冲池
mysql中连接查询的原理是先对驱动表进行查询操作,然后再用从驱动表得到的数据作为条件,逐条的到被驱动表进行查询。
每次驱动表加载一条数据到内存中,然后被驱动表所有的数据都需要往内存中加载一遍进行比较。效率很低,所以mysql中可以指定一个缓冲池的大小,缓冲池大的话可以同时加载多条驱动表的数据进行比较,放的数据条数越多性能io操作就越少,性能也就越好。所以,如果此时使用select * 放一些无用的列,只会白白的占用缓冲空间。浪费本可以提高性能的机会。
文章来源: englishcode.blog.csdn.net,作者:知识浅谈,版权归原作者所有,如需转载,请联系作者。
原文链接:englishcode.blog.csdn.net/article/details/109637239
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)