围绕变量的行情和大括号。哪一个是最快的Mysql查询?

时间:2017-09-21 04:44:26

标签: php sql performance mysqli syntax

我们知道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}'");


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

2 个答案:

答案 0 :(得分:2)

当你没有参与MySQL时,你会问MySQL。

mysqli_query()接受两个参数,一个与DB的连接和一个要执行的查询。

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

你真正要问的是“构建查询字符串的最快方法是什么”,这在Speed difference in using inline strings vs concatenation in php5?中有解释(简答:使用单引号连接)。

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

关于在MySQL本身中使用引号:

SELECT * FROM aTable WHERE a = 'blah';

VS

SELECT * FROM aTable WHERE a = "blah";

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

答案 1 :(得分:0)

SQL查询效果不依赖于报价。双引号通常不在SQL中使用,但引号可能因数据库而异。

SQL查询效果取决于各种情况 -

示例:

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

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

将您的查询字符串执行到phpMyadmin,如 -

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