有一个表,其中包含以下各列:
Name | Type |
---|---|
Id | int |
DateTime | datetime(6) |
公司ID | int (FK) |
IsExcluded | tinyint(1) |
有2个BTREE索引:
- 公司ID
- ComapnyID、DateTime、IsExcluded
SELECT之后使用的是只有一列的第一个索引,此SELECT操作耗时2.3秒.当我强制第二次索引 Select 时,花费0.015秒.此外,当我将DATETIME范围减少一天时,MySQL将使用第二个索引,而不强制.
select IsExcluded,DateTime,公司ID FROM table where
IsExcluded = 0 and
DateTime >= '2022-06-02' and
DateTime < '2022-09-22' and
公司ID = 1;
我知道,如果 Select 了超过20%-30%的行,MySQL可能会决定忽略索引,但我不明白为什么MySQL Select 的索引显然不是最合适的.
有没有办法设置或"了解"MySQL这个查询的第二个索引是最合适的(不插入任何其他要查询的内容)?