Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL查询优化_Php_Mysql_Sql - Fatal编程技术网

Php SQL查询优化

Php SQL查询优化,php,mysql,sql,Php,Mysql,Sql,如果我有一个有50列的表,使用这样的语句会花费更少的时间吗 SELECT id,name,description FROM table 还是和我写的一样 SELECT * FROM table 始终返回尽可能少的列以满足您的需要。如果您不需要所有列,最好只选择您需要的列。虽然MySQL可能不会花费更多的时间来定位行,但将结果发送回客户端肯定会更快(因为返回的数据更少)。选择所有列总是比选择实际需要的列花费更长的时间。在PHPMyAdmin或其他地方尝试一下,看看它们完成的时间。为此,使用更大

如果我有一个有50列的表,使用这样的语句会花费更少的时间吗

SELECT id,name,description FROM table
还是和我写的一样

SELECT * FROM table

始终返回尽可能少的列以满足您的需要。

如果您不需要所有列,最好只选择您需要的列。虽然MySQL可能不会花费更多的时间来定位行,但将结果发送回客户端肯定会更快(因为返回的数据更少)。

选择所有列总是比选择实际需要的列花费更长的时间。在PHPMyAdmin或其他地方尝试一下,看看它们完成的时间。为此,使用更大的表是获得大于
0.001
秒等时间的好主意


James

值得注意的是,在这种情况下,客户端是PHP脚本(而不是用户的浏览器)。@binaryLV:在任何情况下,将大块数据从一个地方移动到另一个地方都比移动小块数据要慢,即使在内存中也是如此。@jcinacio,当然,我不反对这一点。我想说的是,有些人可能认为“客户端”总是意味着“浏览器”,而“php”总是意味着“服务器”。所以他们可能会读到这个答案,认为“哦,从服务器到客户端移动数据很慢,但没关系-我不向客户端发送数据,所以这没关系”,但这是错误的,因为PHP是一个客户端,当谈到在DB和PHP之间发送数据时。请注意,即使要选择所有列,最好还是写出列名——如果以后在每行中添加一个50mb的blob呢?除非你绝对需要,否则你不想把它拆下来。这对于查询管理来说也更好。“是时候使用语句了?”也许是时候发表声明了?甚至可能是“运行语句后传输结果集的时间”?@Andriy M,它实际上不仅仅是传输数据,也是读取数据,所以我会使用“运行时间”(执行?执行?)而不是“传输时间”。此外,它可能会使代码的维护更容易,因为它使语句的意图更清晰,以及实际需要的列(万一将来数据库结构发生变化,更改/重命名列,将它们移动到另一个表以进行(反)规范化…)。