Res*_*had 0 mysql sql postgresql mysqli pdo
我听说很多都不使用*(星号),而是命名我需要的字段.是因为性能问题还是安全原因?有人可以为此说一些好的论点吗?
所以没有
SELECT * FROM users WHERE name='John';
Run Code Online (Sandbox Code Playgroud)
但反而
SELECT name FROM users WHERE name='John';
Run Code Online (Sandbox Code Playgroud)
不在生产查询中使用星号的最大原因是将非SQL代码与数据库模式中的更改隔离开来,或者使这些更改更难以被忽视.
例如,如果您的代码使用星号name在第一列和address第二列中查询,则如果架构更改为在您正在阅读的两个列前面添加第三列,则代码将获取该新列名称,并将名称替换为地址.最糟糕的是它会在没有崩溃的情况下完成所有这些:用户只会看到垃圾数据.
相反,具有显式命名列的查询将在架构更改时获得正确的列,或者在已删除或重命名所需列时中断.这将立即指出问题的根源,使您可以轻松调查并解决问题.