0

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

... 
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,%'

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

4

1 回答 1

0

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

于 2013-09-01T09:59:36.307 回答