相关疑难解决方法(0)

MySQL LIKE vs LOCATE

有谁知道哪一个更快:

SELECT * FROM table WHERE column LIKE '%text%';
Run Code Online (Sandbox Code Playgroud)

要么

SELECT * FROM table WHERE LOCATE('text',column)>0;
Run Code Online (Sandbox Code Playgroud)

mysql

20
推荐指数
2
解决办法
1万
查看次数

mysql Concat 与 OR

我试图找到搜索多个列中出现的单词的最佳方法。当然,一个选项是OR在查询中添加多个's:

SELECT * FROM table WHERE column1 LIKE %term1% OR column2 LIKE %term1% OR......
Run Code Online (Sandbox Code Playgroud)

然而我虽然这使查询很长,特别是当有多个术语时

在我的搜索中,我遇到了CONCATMYSQL 中的函数。这似乎允许我在连接列后进行一次搜索(对吗?):

SELECT * FROM table WHERE CONCAT(column1,column2,....) LIKE %term1% OR CONCAT(column 1,column2,...) LIKE %term2% ....
Run Code Online (Sandbox Code Playgroud)

这具有更易于阅读和维护的优点

因为我还不了解完整的使用方法CONCAT我不知道或者这是一个正确的使用方法。我想知道实现此搜索的正确和最有效的方法是什么。(注意:我还计划按照这个 stackoverflow 问题中的说明对其进行排序:mysql SORT BY amount of unique word matching ,可能在使用这种方法时会出现问题吗?)

编辑:

Maby 解释一下我的最终愿望会更容易:在 php 中,我有一组单词。我希望从我的数据库中选择所有行,其中 1 个单词出现在多个列之一中,然后按相关性对它们进行排序(甚至为某些列增加额外的重要性)。(注意只有几千(少于 5000)行要搜索)

mysql concat multiple-columns

6
推荐指数
1
解决办法
1446
查看次数

标签 统计

mysql ×2

concat ×1

multiple-columns ×1