我们知道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}'");
==编辑==
据我所知,数据库的结构和其他因素也会影响执行速度。但我们假设我们已经有一个结构良好的数据库,并排除其他因素。
答案 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