在mysql中编写查询时[重复]

问题描述 投票:0回答:3

假设我有一个名为 users 的表,其中包含字段 id、名称、用户名和密码。当我编写获取所有字段的查询时,这样写是不是更好

$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'];
}

一个比另一个更好吗?其中一个比另一个更精细。或者它们的性能完全相同

php mysql mysqli
3个回答
2
投票

性能上完全没有区别。不过,我建议您明确要在生产代码中选择的列。如果向表中添加一列,可能会对查询产生影响。对于维护代码的任何人来说,查询正在做什么以及需要什么值也更清楚。

事实上,使用

SELECT *
的效率较低,因为 MySQL 必须查找列名,并且内存效率较低,因为 PHP 创建的构造将具有比使用的值更多的值(可能),这会消耗更多内存。然而,我认为这足以忽略不计,足以让我的“没有区别”评论成立。


1
投票

我不知道性能如何,但是在进行连接时,如果多个表中有相同的列,这可能会给您带来麻烦。在这种情况下,您需要手动设置别名,这通常需要列出所有列。

鉴于我更喜欢保持一致,并且正如爆炸药丸提到的那样,比使用

*
更容易知道正在发生/维护什么。


0
投票

永远不要使用 * 来返回表中的所有列 - 这是懒惰的。您应该只提取您需要的数据。即使您需要每个字段,您的表格也将不可避免地发生变化。

更多详情请参阅this

© www.soinside.com 2019 - 2024. All rights reserved.