假设我有一个名为users的表,其中包含字段id,name,username和password。当我编写获取所有字段的查询时,以这种方式编写它是否更好
$sql = mysqli_query($con,"SELECT * FROM users LIMIT 50");
或者这样:
$sql = mysqli_query($con,"SELECT id, name, username, password FROM users LIMIT 50");
代码:
while($me = mysqli_fetch_array($sql)){
$id = $me['id'];
$name = $me['name'];
$user = $me['username'];
$pass = $me['password'];
}
一个比另一个好。是另一个更精细调整。或者他们都是完全相同的表现
答案 0 :(得分:2)
表现完全没有差别。但是,我建议您明确说明要在生产代码中选择的列。如果向表中添加列,则可能会对查询产生影响。对于维护代码的人来说,查询正在做什么以及需要什么值也更清楚。
事实上,使用SELECT *
效率较低,因为MySQL必须查找列名并且内存效率较低,因为PHP创建的结构将具有比使用的结构更多的值(可能)更多的记忆。但是,我认为这对于我的“无差异”评论来说已经足够微不足道了。
答案 1 :(得分:1)
我不了解性能,但是当进行连接时,如果你在多个表中有相同的列,这会让你遇到麻烦。在这种情况下,您需要手动别名,无论如何通常都需要列出所有列。鉴于我更喜欢保持健康,并且正如爆炸药片提到的那样,比使用*
更容易说明进展/维持。
答案 2 :(得分:0)
永远不要使用*来返回表中的所有列 - 它是懒惰的。您应该只提取所需的数据。即使你需要每一个领域,你的表也将不可避免地发生变化。
更多详细信息,请参阅this