mysql - 集合中的多个查找

标签 mysql

对于集合中的多个查找,我使用:

... 
FROM Table1 a, Table2 b
WHERE CONCAT(',',REPLACE(a.options,',',',,'),',') LIKE CONCAT('%,',REPLACE(b.options,',',',%,'),',%')

a.options = '1,2,3,4,5' VARCHAR()  
b.options = '2,5,6,9,10' VARCHAR()

a.options 和 b.options 中的数字始终按升序排序。 结果是:

WHERE ',1,,2,,3,,4,,5,' LIKE '%,2,%,5,%,6,%,9,%,10,%'

它运行良好,但速度不快。 如何使这个查询更快?

最佳答案

只要有一些数据可讨论,SQL 集上的 Like 和字符串操作就会很慢。无论如何。您也许应该重新考虑为什么需要这样做或更改表结构。 我通过使用一个计算列解决了这样的问题,该列在插入时执行所有预计算,然后保留该计算列。所以我改为对计算列进行查询。

关于mysql - 集合中的多个查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18557220/

相关文章:

迁移到 PHP7 后 PHP 脚本不工作

php - 查询在 PHP 中运行一次

mysql - 在 TypeORM 中使用 QueryBuilder 与 Repository 有哪些不同的用例?

java - 导入数据库驱动

mysql - 需要一个MYSQL查询来比较两个表并且只输出不匹配的结果

mysql - mysql 中列类型自动递增

java - 保存到数据库使按钮无响应

php - 突出显示一个字符串中的所有关键字

mysql - WordPress 迁移损坏的图像 - 即使在更新数据库后

更新数据库时PHP mysql错误