【问题标题】:How to set correct index for this MySql query?如何为此 MySql 查询设置正确的索引?
【发布时间】:2012-02-29 10:36:47
【问题描述】:

我在 MySql 慢查询日志中显示了这个查询。 (它并不慢,但它没有正确使用索引)。我需要一些关于如何正确设置索引的帮助。

SELECT tbladded.amount*SUM(tbladdeditem.amount)
FROM tbladded
INNER JOIN tbladdeditem ON tbladded.addedid = tbladdeditem.addedid AND tbladdeditem.deleted='False' 
WHERE tbladded.userid=100
AND tbladded.date='2012-01-01'
AND tbladded.deleted='False'
GROUP BY tbladded.addedid


id  select_type  table         type  possible_keys        key          key_len  ref               rows  Extra
1   SIMPLE       tbladded      ref   PRIMARY,userid_date  userid_date  8        const,const       1     Using where
1   SIMPLE       tbladdeditem  ref   addedid              addedid      5        tbladded.addedid  1     Using where

这就是表格的样子:

CREATE TABLE `tbladded` (
    `addedid` int(11) NOT NULL AUTO_INCREMENT,
    `amount` double DEFAULT NULL,
    `date` date DEFAULT NULL,
    `userid` mediumint(9) DEFAULT NULL,
    `deleted` enum('False','True') CHARACTER SET latin1 DEFAULT 'False',
    PRIMARY KEY (`addedid`),
    KEY `userid_date` (`userid`,`date`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbladdeditem` (
    `addeditemid` int(11) NOT NULL AUTO_INCREMENT,
    `amount` double DEFAULT NULL,
    `addedid` int(11) DEFAULT NULL,
    `userid` mediumint(9) DEFAULT NULL,
    `deleted` enum('False','True') CHARACTER SET latin1 DEFAULT 'False',
    PRIMARY KEY (`addeditemid`),
    KEY `addedid` (`addedid`),
    KEY `userid` (`userid`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

【问题讨论】:

  • 你的 'GROUP BY tbladded. addedid' 是必要的吗?
  • @user1027167 哦,抱歉,需要 GROUP BY,我在查询中错过了 SUM()。

标签: mysql optimization select join indexing


【解决方案1】:

试试这个:

ALTER TABLE `tbladded` ADD INDEX 
`tbladdedIndex` (`userid`, `date`, `deleted`);

【讨论】:

  • 是的,我也考虑过将“已删除”添加到索引中,但我不确定它是否重要,因为使用“用户 ID”和“日期”只会给出 5-10 个结果。也许添加“已删除”是不必要的?
猜你喜欢
  • 2018-12-16
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 2020-09-04
相关资源
最近更新 更多