Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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
Mysql 使用like on join语句最有效的方法是什么?_Mysql - Fatal编程技术网

Mysql 使用like on join语句最有效的方法是什么?

Mysql 使用like on join语句最有效的方法是什么?,mysql,Mysql,在使用join语句时,我希望使用like条件连接表。 最有效的方法是什么 使用fielda-like-CONCAT(“%”,fieldb“%”)似乎不是很有效使用2个wild-char会使索引无效,您可以做的是删除前面的一个,mysql仍然会使用索引来查找您搜索的内容。如果没有索引,请使用以下代码创建索引: CREATE INDEX indexname ON tablename(columnname); 然后将查询更改为 fielda like CONCAT (fieldb, '%') 为了

在使用join语句时,我希望使用like条件连接表。 最有效的方法是什么


使用
fielda-like-CONCAT(“%”,fieldb“%”)
似乎不是很有效

使用2个wild-char会使索引无效,您可以做的是删除前面的一个,mysql仍然会使用索引来查找您搜索的内容。如果没有索引,请使用以下代码创建索引:

CREATE INDEX indexname ON tablename(columnname);
然后将查询更改为

fielda like CONCAT (fieldb, '%')

为了使用索引,要考虑的其他内容是一个文本字段或简单的VARCHAR字段,因为如果包含更长的文本,则应该考虑全文检索。 这里有一篇关于这个主题的更深入的文章,有示例和很好的解释等


如果您想进行实际搜索,您需要学习如何进行全文索引和查询。我相信你可以通过搜索谷歌找到一些关于这个主题的入门知识,但这里是MySQL文档:

是的,它非常低效,因为它会杀死列上定义的任何索引。最好的方法是重新创建表或类似于添加新列的内容,在其上放置索引,然后再次执行联接。您可以使用任何想要的联接条件。它最终归结为一个真/假值。如果联接结果为true,则DB将对正在考虑的两行执行联接。如果为false,则跳过行组合。由于您没有提供任何表结构/详细信息/要求,我们无法告诉您答案是什么。什么应用程序语义鼓励您使用%+字段+%?如果你能提供更多关于你想做什么的细节,社区就能提供更多的帮助。