SELECT *和SELECT值有什么区别

时间:2018-09-18 22:24:21

标签: php mysql session select

两者之间有什么区别

    $query = "SELECT email FROM users WHERE username='$username' ";
    $result = mysqli_query($db, $query);
    $row = mysqli_fetch_array($result);
    $email = $row['email'];
    $_SESSION['email'] = $email;

    $query = "SELECT * FROM users WHERE username='$username' ";
    $result = mysqli_query($db, $query);
    $row = mysqli_fetch_array($result);
    $email = $row['email'];
    $_SESSION['email'] = $email;

它们都返回相同的值,有没有更有效的方法呢?

4 个答案:

答案 0 :(得分:1)

select *将返回表中具有与谓词相匹配的行的所有列的值,而select column_name仅返回column_name列中与匹配的行相匹配的值您的谓词。

答案 1 :(得分:1)

SELECT column仅返回该列的值。 SELECT *返回表中每一列的值。如果您要在第二个代码块中使用print_r($row),则在数组中看到的元素将不仅仅是$row['email']

有一个很好的问答环节here,它讨论了SELECT *SELECT column的相对性能差异。 @Uueerdo关于其他字段之一的大斑点导致性能问题的观点也很有效。

SELECT *表也可能会遇到JOIN的问题,如果两个表具有相同名称的列,则当数据返回到应用程序时,一个表中的值会覆盖另一个表中的值框架。

答案 2 :(得分:0)

如果只想使用*,则

email效率最低,因为您要返回每个列的值。

您还应该参数化您的查询。

$query = "SELECT email FROM users WHERE username= ? ";

http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

答案 3 :(得分:0)

  • 全选,表示将返回所有列,但是“选择电子邮件”将返回更有效的“电子邮件”列。您还可以选择许多列,例如: “选择ID,向用户发送电子邮件”。