jQuery UI自动完成:搜索2个未链接的巨大MySQL表

问题描述 投票:0回答:1

我的网站引用了超过100.000篇不同作者的文章。我想在两个表中使用jQuery UI自动完成搜索,无论是文章标题还是作者名称。

这两个表基本上是:

表文章

  • 标题(例如:这是标题)
  • slu((例如:这是标题)

表作者

  • 名字(例如:John Doe)
  • slu((:john-doe)

应该检索slug信息,因为搜索栏将根据搜索结果重定向到article.php或author.php。

我担心的是解析这两个表需要很长时间,超过30秒:

SELECT title, ar.slug, name, au.slug
FROM articles ar,author au
WHERE published = 1
AND (title LIKE :term OR name LIKE :term)

该列已经编入索引。

有更好的方法吗?谢谢你的帮助。

php mysql jquery-ui jquery-ui-autocomplete
1个回答
1
投票

您的查询速度太慢的原因是您的JOIN没有条件,因此您获得的潜在结果集为100,000 * 20,000,即必须由WHERE子句过滤的2B行。由于此查询的表之间不需要任何类型的关系,因此最好只使用UNION,添加一个字段来区分authortitle

SELECT 'author' AS type, name AS value, slug
FROM author
WHERE published = 1 AND name LIKE :term
UNION
SELECT 'title' AS type, title, slug
FROM articles
WHERE published = 1 AND title LIKE :term
© www.soinside.com 2019 - 2024. All rights reserved.