Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 如何使用索引快速实现mysql查询_Php_Mysql_Phpmyadmin - Fatal编程技术网

Php 如何使用索引快速实现mysql查询

Php 如何使用索引快速实现mysql查询,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我在表中有将近25000行的问题,我还有下面的查询。是否可以实现索引以提高查询效率。如果是,请给我一个示例代码。我对每个键都有ajax调用 SELECT question, url_question FROM `questions` WHERE detail LIKE '%a%' OR question LIKE '%a%'; 在字段上创建一个全文键,如下所示 ALTER TABLE questions ADD FULLTEXT KEY `detail` (`IX_detail`); 及

我在表中有将近25000行的问题,我还有下面的查询。是否可以实现索引以提高查询效率。如果是,请给我一个示例代码。我对每个键都有ajax调用

SELECT question, url_question FROM `questions` 
WHERE detail LIKE '%a%' OR question LIKE '%a%';

在字段上创建一个全文键,如下所示

ALTER TABLE questions
ADD FULLTEXT KEY `detail` (`IX_detail`);


如果您想搜索单个字母,则不可能。

从3开始,您可以使用全文搜索

您可以使用MySQL解释功能优化查询-请参阅:

连接到MySQL服务器并执行以下语句:

mysql> EXPLAIN $YOURSTATEMENTGOESHERE;
然后,MySQL将返回此语句影响的所有行/列的有用概览。根据这些信息,您可以添加一些有效的索引


阅读本书还可以更好地了解MySQL如何使用索引。

如果可以,请检查搜索长度,如果字符串长度小于2或3,则不发送请求,这将停止不必要的请求,此外,您还可以在sql查询中设置限制。这将提高性能

不可能对此类查询使用索引(使用LIKE,只能对前缀搜索进行索引,但您正在搜索字符串中的任何位置)。如果您搜索的是整个单词,可以选择全文搜索。@MichaelMadsen评论不错。你应该将此作为答案发布!
mysql> EXPLAIN $YOURSTATEMENTGOESHERE;