我有一个 MySQL 查询,我需要尽可能优化(如果可能,加载时间应该低于 5 秒)
查询如下:
SELECT domain_id, COUNT(keyword_id) as total_count
FROM tableName
WHERE keyword_id IN (SELECT DISTINCT keyword_id FROM tableName WHERE domain_id = X)
GROUP BY domain_id
ORDER BY total_count DESC
LIMIT ...
- X 是来自输入的整数
- domain_id 和keyword_id 被索引
- 数据库在本地主机上,所以网络速度应该是最大的
WHERE 子句的子查询最多可以获得 1000 万个结果。此外,对于 MySQL 来说,计算 COUNT 和 ORDER BY 这个计数似乎真的很困难。
我尝试将此查询与 SOLR 混合,但没有结果,一次获取如此多的行数给 MySQL 和 SOLR 带来了困难
我正在寻找一种具有相同结果的解决方案,无论我是否必须使用不同的技术或对此 MySQL 查询进行改进。
谢谢!
查询逻辑是这样的:
我们有一个域,我们正在搜索该域上使用的所有关键字(这是子查询)。然后我们取所有使用第一个查询中找到的至少一个关键字的域,按域分组,每个域使用的关键字数量,我们必须按使用的关键字数量排序 DESC。
我希望这是有道理的