我正在研究一个有大量索引的系统.有些索引比其他索引简单.也就是说,它们是INT、VARCHAR、DATETIME,在某些情况下是enum(可能是5~25个变体).
秩序重要吗?换句话说,首先放置更容易搜索的列是否会提高速度/性能?
i、 假设我们有这张桌子,它看起来像这样
CREATE TABLE IF NOT EXISTS `example_table` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
`user_id` int(11) unsigned NOT NULL, -- 1 ~ 4,294,967,295 (non unique)
`type_id` int(11) unsigned NOT NULL, -- (Enum with 15 values)
`name` VARCHAR(255) NOT NULL, -- alphanumeric
`boolean_value` tinyInt(1) DEFAULT 0, -- only 0 or 1
`created_date` DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE INDEX `example_table_user_id_index` ON `example_table` (`user_id`);
CREATE INDEX `example_table_type_id_index` ON `example_table` (`type_id`);
CREATE INDEX `example_table_name_index` ON `example_table` (`name`);
CREATE INDEX `example_table_boolean_value_index` ON `example_table` (`boolean_value`);
CREATE INDEX `example_table_created_date_index` ON `example_table` (`created_date`)
我们希望搜索首先返回最少结果的列,这样下一个条件将有更少的列可供翻转,这样说对吗?
i、 e.这些陈述会给出不同的绩效结果吗?
1. SELECT id FROM example_table WHERE boolean_value = ? AND user_id = ? AND type_id = ? LIMIT 1000
2. SELECT id FROM example_table WHERE type_id = ? AND user_id = ? AND boolean_value = ? LIMIT 1000
3. SELECT id FROM example_table WHERE user_id = ? AND type_id = ? AND boolean_value = ? LIMIT 1000