SQL 使用 select * 的弊端

select中要不要使用 * 

除了极少数情况下,绝大多数情况下,使用 * 是一种糟糕的编程习惯!

分析如下:

1、如果采用 select * 进行查找时,查询到的列是按照它们在表的原始位置展示的;如果客户端同样采用列的原始位置进行引用,如果更改表结构,会导致难以察觉的错误

2、使用 * 时,数据库会先查数据字典,明确 * 代表什么,这会在分析阶段造成大量开销;

3、select * 最大的问题是可能会多出一些不用的列,导致无法使用索引覆盖,导致查询成本几何层级的增加

4、不需要的字段会增加数据传输的时间,如果是本地客户端,连接的事本地的mysql服务器,tcp协议传输数据会增加额外时间;如果是db和客户端不在同一台机器,比如连接到阿里云,则开销会更加明显

5、如果查询的时候获取了不必要的列,字段较多时,mysql并非一次性保存,而是主次分布内存,当时用完后,再次分配。如此会导致多次分配,频繁分配会增加额外消耗时间

6、如果sql语句复杂,select * 会解析更多的对象,字段,权限,属性等内容,增加数据库负担

猜你喜欢

转载自blog.csdn.net/weixin_44588186/article/details/87263756