Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 由于使用了错误的索引,分组查询速度较慢_Mysql_Sql - Fatal编程技术网

Mysql 由于使用了错误的索引,分组查询速度较慢

Mysql 由于使用了错误的索引,分组查询速度较慢,mysql,sql,Mysql,Sql,我有一个MySQL(更准确地说是MariaDB)数据库,它保存不同的“记录”(不要与数据库记录混淆,这些是我的系统使用的数据单元,由多个键值字段组成)。 每个“记录”都是“实例”的一部分。 每个“实例”都是“用户组”的一部分。 每个“记录”都可以是“类别”的一部分 我正在尝试编写一个SQL查询来检索用户组的所有类别,并检索每个类别下所有实例中存在的记录量。 我的SQL语句如下所示: SELECT COUNT( r.id ) AS records_number, c.category FROM r

我有一个MySQL(更准确地说是MariaDB)数据库,它保存不同的“记录”(不要与数据库记录混淆,这些是我的系统使用的数据单元,由多个键值字段组成)。 每个“记录”都是“实例”的一部分。 每个“实例”都是“用户组”的一部分。 每个“记录”都可以是“类别”的一部分

我正在尝试编写一个SQL查询来检索用户组的所有类别,并检索每个类别下所有实例中存在的记录量。 我的SQL语句如下所示:

SELECT COUNT( r.id ) AS records_number, c.category
FROM records r
INNER JOIN feeds_instances i ON r.instance = i.id
INNER JOIN feeds_instances_categories c ON c.instance = i.id
WHERE i.user_group = '0'
AND r.reviewed IS NULL
GROUP BY c.category
LIMIT 0 , 30
当使用SQL\u NO\u缓存测试查询时,我得到一个0.2秒以上的查询。当删除GROUP BY时,它将减少到0.0008秒。 当我为SQL查询执行EXPLAIN命令时,我得到表c使用的索引是“实例”而不是“类别”(feeds\u instances\u categories表有三列:id、instance、category。实例和类别上存在索引)

我试图强制组使用索引类别。我尝试使用use index命令,但出现错误。我很可能没有正确执行此操作,并且在文档中找不到如何正确执行此操作


任何帮助都将不胜感激!

MySQL非常不愿意使用索引进行聚合,因此您可能不会成功

您应该确保查询中的联接和where筛选器具有正确的索引。这可能是:
记录(实例,已审阅)
提要\实例(用户组,id)
,以及
提要\实例\类别(实例,类别)


如果将
user\u group
声明为数字,则删除单引号。混淆字符串和数字也会混淆优化器。

数据库中有多少条目


如果您在没有group by的情况下执行查询,则限制将在30个条目后全部删除。但是group by函数将删除表中的所有条目,然后对它们进行限制。

我被SQL Server标记删除,因为它不支持
限制
。是否
选择{yourFields}从feeds\u instances\u categories c internal JOIN feeds\u instances i ON i.id=c.instance internal JOIN records r ON r.instance=i.id{其余部分}
help?添加记录(实例,已审核)将查询时间从0.2秒减少到0.02秒!谢谢!