【发布时间】:2010-09-23 14:42:31
【问题描述】:
是否有一种资源密集度较低/速度更快的方式来执行此查询(部分基于:This StackOverflow question)。目前,每张表只需要 0.008 秒搜索十几行。
SELECT DISTINCT *
FROM (
(
SELECT DISTINCT ta.auto_id, li.address, li.title, GROUP_CONCAT( ta.tag ) , li.description, li.keyword, li.rating, li.timestamp
FROM tags AS ta
INNER JOIN links AS li ON ta.auto_id = li.auto_id
WHERE ta.user_id =1
AND (
ta.tag LIKE '%query%'
)
OR (
li.keyword LIKE '%query%'
)
GROUP BY li.auto_id
)
UNION DISTINCT (
SELECT DISTINCT auto_id, address, title, '', description, keyword, rating, `timestamp`
FROM links
WHERE user_id =1
AND (
keyword LIKE '%query%'
)
)
) AS total
GROUP BY total.auto_id
非常感谢,
冰
【问题讨论】:
-
你真的需要 LIKE '%query%' 吗?我认为他们永远不会很快。
-
是的,因为我正在搜索,除非你知道另一种方式。
-
我在第一个之后摆脱了差异 - 将时间减半到 0.004
-
如果你可以做 LIKE 'query%' 这会加快速度,即。以而不是包含查询字符串开头。
-
很遗憾,这是不可能的,但还是谢谢你——你的建议将来可能会对我有所帮助。
标签: mysql