【问题标题】:Quotes and curly brakets around variables. Which one makes the fastest Mysql query?变量周围的引号和大括号。哪个是最快的 Mysql 查询?
【发布时间】:2018-03-02 07:36:07
【问题描述】:

我们知道 PHP 中的单引号比双引号快,所以 $foo = 'lorem ipsum';$foo = "lorem ipsum"; 快。

但是在 Mysql 查询中呢?单引号还是双引号会影响执行速度吗?

考虑以下不同的语法。哪一个是最快的?还是有另一种更快的语法?

mysqli_query($conn, 'SELECT * FROM `mytable` WHERE `full_name` = "' . $full_name. '"');

mysqli_query($conn, "SELECT * FROM `mytable` WHERE `full_name` = '" . $full_name. "'");

mysqli_query($conn, "SELECT * FROM `mytable` WHERE `full_name` = '$full_name'");

mysqli_query($conn, "SELECT * FROM `mytable` WHERE `full_name` = '{$full_name}'");


== 编辑 ==
我知道数据库的结构和其他因素也会影响执行速度。但是让我们假设我们已经有一个结构良好的数据库并排除其他因素。

【问题讨论】:

  • 查询的速度不是你写它的方式,而是你访问数据的方式。例如,如果您通过user_id(int) 查询一百万用户,则索引将比您通过full_name(varchar(255)) 查询用户更快。
  • 如果我猜的话,我会说查询的执行速度很大程度上取决于数据结构和数据库,而不是 PHP 语法。但我可能是错的。
  • 谢谢大家。我理解你的观点。但是让我们假设我们已经处理了数据库结构和其他因素。
  • 简短的回答是没有区别。这个答案有更多信息:stackoverflow.com/questions/3446216/…
  • @bbrumm 谢谢。该答案解释了纯 PHP 中的情况,而我想知道 Mysql 查询中的情况。此外,即使在纯 PHP 中,单引号和双引号也会有所不同,不是吗?

标签: php sql performance mysqli syntax


【解决方案1】:

当不涉及 MySQL 时,您是在询问 MySQL。

mysqli_query() 有两个参数,一个到数据库的连接和一个要执行的查询。

查询是一个简单的字符串,您可以根据需要构建它。

您真正要问的是“构造查询字符串的最快方法是什么”,Speed difference in using inline strings vs concatenation in php5? 对此进行了解释(简短回答:使用单引号连接)。

另一种构造查询的方法是使用prepared statements,这对于单个查询会比较慢(您需要调用两个函数),但在使用不同参数重复相同查询时会快很多。

关于 MySQL 内部引号的使用:

SELECT * FROM aTable WHERE a = 'blah';

SELECT * FROM aTable WHERE a = "blah";

之前SO也有回答,看看When to use single quotes, double quotes, and backticks in MySQL(关于单/双的简短回答,没有区别,单引号是标准)

【讨论】:

  • 谢谢。所以有问题的语法并不真正涉及Mysql。看起来第一个是最快的。感谢您让我知道另一种选择(准备好的陈述)。
【解决方案2】:

SQL查询性能不依赖于报价。 SQL中一般不使用双引号,但引号因数据库而异。

SQL查询性能取决于各种情况-

示例:

  • 表大小
  • 加入
  • 索引
  • 聚合等

注意:但对于大量行,使用双引号 (") 需要毫秒差异。

执行你的查询字符串到phpMyadmin like -

SELECT * FROM YourTable WHERE title ='SOME TITLE';
SELECT * FROM YourTable WHERE title ="SOME TITLE"; #This Query will take some Milliseconds difference for huge number of rows in Different Database

【讨论】:

  • 谢谢。关于你的笔记,使用双引号是更快还是更慢?
  • #This Query will take some Milliseconds difference for huge number of rows 这是完全错误的。 mysql 不像 php 那样在 "" 中寻找变量。两者都是 mysql 的字符串文字
  • 这取决于大量的行选择。我更新了我的答案
  • 您可以在这里查看详细信息stackoverflow.com/questions/1992314/…
猜你喜欢
  • 1970-01-01
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 2021-10-25
相关资源
最近更新 更多