1

假设我有一个名为 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'];
}

一个比另一个好。一个比另一个更精细。或者它们在性能方面是否完全相同

4

3 回答 3

2

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

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

于 2013-06-22T19:54:17.120 回答
1

我不知道性能,但是在进行连接时,如果您在多个表中有相同的列,这会给您带来麻烦。在这种情况下,您需要手动别名,这通常需要列出所有列。鉴于我更喜欢​​保持一致,并且正如 Explosion Pills 提到的那样,它比使用*.

于 2013-06-22T19:55:08.073 回答
0

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

更详细的看这个

于 2013-06-22T19:56:28.567 回答