Php 在mysql中编写查询时
假设我有一个名为users的表,其中包含id、name、username和password字段。当我编写用于获取所有字段的查询时,这样写是否更好Php 在mysql中编写查询时,php,mysql,mysqli,Php,Mysql,Mysqli,假设我有一个名为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_
$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'];
}
一个比另一个好。一个比另一个更精细。或者两者的性能完全相同性能上根本没有差异。但是,我建议明确说明要在生产代码中选择的列。如果向表中添加列,可能会对查询产生影响。对于任何维护代码的人来说,查询正在做什么以及需要什么值也更清楚
事实上,使用
SELECT*
效率较低,因为MySQL将不得不查找列名,而且它的内存效率较低,因为PHP创建的结构将比使用的(可能)具有更多的值,这将消耗更多的内存。但是,我认为这对于我的“无差异”评论来说是微不足道的。我不知道性能如何,但是在执行联接时,如果在多个表中有相同的列,这可能会给您带来麻烦。在这种情况下,您需要手动使用别名,这通常需要列出所有列。考虑到我更喜欢保持一致性,正如爆炸药丸提到的那样,比起使用*
永远不要使用*返回表中的所有列,它更容易判断/维护发生了什么-这是懒惰的。您应该只提取所需的数据。即使您需要每个字段,您的表也将不可避免地发生变化
有关更多详细信息,请参见是什么阻止您进行某些测试?假设字段存在,两者都会起作用,但记录在案的最佳实践是后者。@u\u mulder我不知道sql server最喜欢什么,请不要重复提问,谢谢!第二个是更好的表现。谢谢你们,正是我想要的,当我可以的时候,你们会接受我的回答。是的!如果您使用*,表更改不会造成任何伤害。使用显式设置的字段名时,可能会导致崩溃