例如,让我们进行查询:
SELECT * FROM users
WHERE parent_id = 1
AND created > '2016-05-06 00:00:00'
ORDER BY updated DESC, created ASC
不会添加以下索引是最好的,以避免使用任何文件排序?:
ADD INDEX `search` (`parent_id` ASC, `created` ASC, `updated` DESC, `created` ASC)
尝试添加索引时,我得到了#34;重复列"。有什么方法可以避免这种情况吗?我目前正在使用相当大的数据集,因此优化是关键。
答案 0 :(得分:1)
您在索引的定义中指定了两次datetime.datetime
列。摆脱第二个,你应该没问题:
created
答案 1 :(得分:1)
SDL_BLENDMODE_ADD
是该查询的最佳索引。列必须按此顺序排列(首先INDEX(parent_id, created)
,然后是'范围')。添加其他列无济于事。
因为您在= constant
中混合DESC
和ASC
(并且因为您无法将索引声明为ORDER BY
),所以无法使用索引避免使用DESC
。
答案 2 :(得分:0)
您不需要两个不同的索引来进行查询和排序。同样适用于两个操作因此,只需从ADD INDEX查询中删除重复的created
。