我仍然有以下问题
EXPLAIN EXTENDED SELECT
`item`.`id`,
`item`.`timestamp`,
`item`.`label`
FROM
item
WHERE
item.dataTypeId=30
GROUP BY
item.id
ORDER BY
item.timestamp DESC
LIMIT 0,6;
Id & timestamp是一个主键对 (mediumint+datetime) dataTypeId是一个外键 (mediumint) 表被创建为InnoDb
可以有更多具有相同 id 和不同时间戳的记录(同一项目的版本)。这就是group by 的原因。
例如,我读过这个:stackoverflow 上的类似主题
但它没有解决我的问题。
我尝试创建以下索引:
- (dataTypeId, id, timestamp) 上的索引 - 按此顺序
- (dataTypeId, timestamp) 上的索引 - 按此顺序
- 身份证上的索引
- 时间戳索引
最后两个有点绝望
我想我必须错过一些基本的东西——
但真的不知道是什么。
不要指望解决方案(这会很好:) 以正确的方式踢我 :)
sort_buffer_size 现在是 4194288
编辑: 解释 - 没有索引
"1" "SIMPLE" "item" "ref" "FK_dataTypeId" "FK_dataTypeId" "4" "const" "5608" "Using where; Using temporary; Using filesort"
用创建的索引解释
"1" "SIMPLE" "item" "ref" "FK_udssDataItem_1,testIndexType,testIndexTypeTimestamp,testIndexTypeIdTime" "FK_udssDataItem_1" "4" "const" "5632" "Using where; Using temporary; Using filesort"