mysql带where的join加索引_mysql - 通过Join-Where-Group通过选择查询正确索引,避免使用临时索引;使用文件排序 - SO中文参考 - www.soinside.com...

关于以下情况的解决方案,我进行了很多搜索,但不幸的是,我没有找到类似的情况。

我有以下情况:(作为新用户,网站拒绝了我的图片,但是我可以通过邮件发送它。下面是它的文字表示)Table 1 "swap_plan" Table 2 "cell"

ClusterName | SiteID SiteID | Cell | Time | Counter

----------------------- ---------------------------------------------

Cluster A | SiteID A1 SiteID A1 | Cell A1-1 | day1 | 5

Cluster A | SiteID A2 SiteID A1 | Cell A1-1 | day2 | 3

Cluster A | SiteID A3 SiteID A1 | Cell A1-1 | day3 | 6

Cluster A | SiteID A4 SiteID A1 | Cell A1-2 | day1 | 6

Cluster A | SiteID A5 SiteID A1 | Cell A1-2 | day2 | 2

Cluster A | SiteID A6 SiteID A1 | Cell A1-2 | day3 | 9

....................... ..............................................

Cluster B | ......... ..............................................

(Where No 1) (ON Clause "SiteID") (Where No 2) Sum(Counter)

我必须显示一些性能指标(表2“单元”中的“计数器”),随着时间的推移(表2中的“单元”中的“时间”)和集群(表1中的“ swap_plan”中的“ ClusterName”显示)。 >

通过两个表“ SiteID”的公共列完成连接。请注意,在表2“单元”中,每个SiteID均包含3个不同的对象(“单元”)。因此,实际上我为每个单元格执行了“ Counter”的SUM()。

查询如下:SELECT ClusterName,Time,SUM(counter)

FROM cell

INNER JOIN swap_plan ON swap_plan.Siteid = cell.Siteid

WHERE ClusterName='Cluster A' AND Time>=day1 AND Time<=day2

GROUP BY Time

以下列类型:

表1“交换计划”:ClusterName-CHAR(30)

SiteID-VARCHAR(10)

表2“单元格”:SiteID-VARCHAR(10)

时间-DATETIME

Counter-INT

“说明”显示如下:table type key key_len ref rows Extra

swap_plan ref Index 1 30 const 31 Using where; Using index; Using temporary; Using filesort

cell ref Index_siteid 13 swap_plan.SiteID 368 Using where

使用的索引如下:

交换计划:索引1(1。ClusterName和2. SiteID)

单元格:Index_siteid(SiteID)

优化器在其中查找的行数很少,这很好:

交换计划:6066中的31个,单元格:660万中的368个。

我的问题是这些“使用临时;使用文件排序”。据我了解,这来自于Group By所需的排序(如果删除它,则不会根据Explain执行这些过程)。我发现为了避免它们,您需要在分组依据的列上有一个索引。我有一个仅包含“时间”列的特殊索引,但是即使有提示“ USE INDEX FOR GROUP BY()”,也不会使用该索引。

因此,我的查询运行速度不够快-大约需要15秒(比如说15个SiteID和10个日期),因此我需要将此持续时间至少减少一半。

我的主要问题是:完全可以删除“使用临时;使用文件排序”或减少执行它们所需的时间? (我试图增加读取缓冲区大小为16MB,无效)

在JOIN情况下,在WHERE子句中按不同表中的2列进行过滤,而在ON子句中按第三列进行过滤时,我需要什么样的索引定义

我可以应用哪种优化组(索引等)?

非常感谢!

我已经就下述情况的解决方案进行了大量搜索,但不幸的是,我还没有找到类似的情况。我有以下情况:(作为新用户,网站拒绝了我的图片,但是我...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值