Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 - Fatal编程技术网

Php 如何在MySQL中对表的一列执行搜索调用?

Php 如何在MySQL中对表的一列执行搜索调用?,php,mysql,Php,Mysql,我想在MySQL上打个电话,我有一张很大的桌子。我希望查询能够在其中一列中搜索,并找到类似的结果。这是我一直在尝试的sql查询: SELECT gene FROM promoter where gene LIKE '%ccl5%' limit 10; 我加入“限制10”只是为了尝试一下。我有“基因”的索引,它需要5-6秒的时间来进行搜索。我怎样才能以最慢的速度搜索特定列中的“短语” 我还希望每个结果只返回一个。如果我搜索“ccl5”并且已经找到了好几次,我会得到一个列表,其中包含所有返回的“c

我想在MySQL上打个电话,我有一张很大的桌子。我希望查询能够在其中一列中搜索,并找到类似的结果。这是我一直在尝试的sql查询:

SELECT gene FROM promoter where gene LIKE '%ccl5%' limit 10;
我加入“限制10”只是为了尝试一下。我有“基因”的索引,它需要5-6秒的时间来进行搜索。我怎样才能以最慢的速度搜索特定列中的“短语”


我还希望每个结果只返回一个。如果我搜索“ccl5”并且已经找到了好几次,我会得到一个列表,其中包含所有返回的“ccl5”。我尝试使用SELECT DISTINCT,但这会导致服务器长时间处理查询。。我还没有看到它完成此命令。

如果您的值真的那么大,您可以尝试:

然后像这样选择它:

SELECT gene FROM promoter WHERE match (gene ) against ('ccl5');

确保对
gene
进行了索引,这将有所帮助,正如您在我的描述中所看到的,我已经提到我对“gene”进行了索引。但是索引大约需要6秒钟,这太长了。看起来你有一个包含dna/基因序列的数据库,现在你正在将这个序列作为字符串存储在一个表字段中。MySQL很难(或不可能)建立索引来搜索字符串中的任意元素。在另一个表中定义序列可能更可行,比如
promoterid | genid | position
好的,我将检查该解决方案。你能告诉我一件事吗?当我搜索“ccl”时,我确实得到了使用我的问题中的查询返回的任何“ccl5”。你能告诉我这是为什么吗?是的,我很抱歉,我确实错过了这一点。不要理会我的评论!谢谢你的回复。我得到一个错误,我的表不支持完整的表索引。我猜这是因为我使用的是innoDB而不是MyISAM。还有其他选择吗?在加入全文索引之前,至少先看一看幕后发生的一些魔法,以及它是否适用于您的问题……@Vanquiza自MySQL 5.6.4以来,您也可以将全文索引添加到InnoDB表中,正如你可以在我提供的链接中看到的那样。是的,我仔细阅读了一下,并找到了答案,非常感谢:)
SELECT gene FROM promoter WHERE match (gene ) against ('ccl5');