Mysql 不使用索引的查询
有人能告诉我为什么这个查询没有使用索引idx\U accessorieslinkid吗 我创建了索引:Mysql 不使用索引的查询,mysql,Mysql,有人能告诉我为什么这个查询没有使用索引idx\U accessorieslinkid吗 我创建了索引: CREATE INDEX idx_accessorieslinkid ON `accessorieslink` (actionid); 我不熟悉索引,并且试图了解它们是如何工作的(以及为什么有时它们不工作!) sql 解释结果 id select_type table type possible_keys key
CREATE INDEX idx_accessorieslinkid ON `accessorieslink` (actionid);
我不熟悉索引,并且试图了解它们是如何工作的(以及为什么有时它们不工作!)
sql
解释结果
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY action index_merge idx_actiontypeid,idx_actiondate idx_actiondate,idx_actiontypeid 4,5 141 Using intersect(idx_actiondate,idx_actiontypeid); Using where; Using index; Using temporary; Using filesort
1 PRIMARY <derived2> ALL 7804
2 DERIVED accessorieslink ALL 12175 Using temporary; Using filesort
id选择类型表类型可能的键长度参考行额外
1使用intersect(idx_actiondate,idx_actiontypeid)合并idx_actiontypeid、idx_actiondate、idx_actiontypeid的主要操作索引4,5 141;在何处使用;使用指数;使用临时设备;使用文件排序
1小学全部7804
2个派生附件使用临时链接所有12175;使用文件排序
派生表不能在物理表上使用索引
尝试下面的查询
SELECT SUM(accprice) AS accprice, accessorieslink.actionid FROM accessorieslink
LEFT JOIN `action` ON accessorieslink.actionid = action.actionid
GROUP BY accessorieslink.actionid
派生表不能在物理表上使用索引 尝试下面的查询
SELECT SUM(accprice) AS accprice, accessorieslink.actionid FROM accessorieslink
LEFT JOIN `action` ON accessorieslink.actionid = action.actionid
GROUP BY accessorieslink.actionid
您好-此解决方案没有任何更改,因此删除了这些子查询-仅保留联接表并在外部函数SELECT action.actionid、SUM(accessorieslink.accprice)上分组作为ACTION LEFT的accprice加入accessorieslink ON accessorieslink.actionid=ACTION.actionid,其中ACTION.typeid='2'和actiondate2在'20130301'和'20130301'之间按accessorieslink.actionid按actiondate2描述分组-此解决方案没有更改,因此删除了这些子项查询-刚刚离开联接表并在外部函数SELECT action.actionid和SUM(accessorieslink.accprice)上分组作为操作左侧的accprice加入accessorieslink ON accessorieslink.actionid=ACTION.actionid,其中ACTION.typeid='2'和actiondate2在'20130301'和'20130301'之间按accessorieslink.actionid排序按actiondate2描述