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

jQuery UI autocomplete: search 2 huge MySQL tables not linked

我的网站引用了 20,000 位不同作者的 100,000 多篇文章。我想 jQuery UI 在两个表中自动完成搜索,文章标题或作者姓名。

两个表基本是:

Table articles

  • title (ex: This is the title)
  • slug (ex: this-is-the-title)

Table author

  • name (ex: John Doe)
  • slug (ex: john-doe)

应该检索 slug 信息,因为搜索栏将重定向到 article.phpauthor.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)

该列已编入索引。

有没有更好的方法? 感谢您的帮助。

您的查询如此缓慢的原因是您的 JOIN 没有条件,因此您得到的潜在结果集为 100,000*20,000,即 2B 行必须由您的 WHERE 子句。由于此查询不需要表之间的任何类型的关系,因此最好只使用 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