【发布时间】:2014-05-09 12:46:08
【问题描述】:
表中有 3 列,包含 1000 万个条目。 col1、col2、col3。 col1 存储最多 2 位数字,col2 存储最多 9 位数字,col3 存储 0 或 1。
现在,当我按顺序 (col1,col2,col3) 复合索引时,我得到了结果(一些选择操作的结果,其中所有 3 列都涉及到 where 条件 - col1 的精确值和 col3 是指定的,而 col2) 的范围大约需要 0.5 秒,而如果我将其订购为 (col3,col1,col2) 大约需要 10 秒(对于相同的查询)。
据我了解,mysql 中的索引会按照我指定的顺序适当地连接 3 列中的值,并在初始排序后查询时运行二进制搜索。根据这种理解,如果我指定col3=1 或col3=0 它,那么一开始就提到col3 应该等同于如果不优于按顺序(col1,col2,col3)编写它将搜索范围缩小一半。
请解释异常!
【问题讨论】: