【发布时间】:2016-07-07 07:15:42
【问题描述】:
我有一个包含以下列的 InnoDB 表
- id MEDIUMINT UNSIGNED AUTO_INCREMENT
- VARBINARY(16)
- b CHAR(2)
- c VARCHAR(100)
- d MEDIUMINT UNSIGNED
- e TINYINT UNSIGNED,范围 0-49
我大部分时间都会执行这样的查询
SELECT d, e, c FROM tbl WHERE a=0x5caffbb2 AND d>1000000 AND (e=1 OR e=5 OR e=6 OR e=8 OR e=15)
我应该如何设置索引
- 最大选择速度
- 不错的 SELECT 速度和高 INSERT 速度
【问题讨论】:
-
您多久插入一次记录?
-
非常频繁,有时高达 1000 倍,通常像每秒 50 次
-
您选择的字段都是整数。所以可能值得一个覆盖指数。可能值得避免 varchar / char 字段上的索引。请注意,您的主键的最大值为 16777215,每秒插入 50 条记录将在大约 93 小时内溢出。
标签: mysql indexing sql-optimization