复合索引的优化

believe218 2014-11-01 11:20:34
table1 里面有5个字段

col1,col2,col3,col4,col5

如果我的查询条件有
where col1='A' and col5='test'
where col2='A' and col5='test'
where col3='A' and col5='test'
where col4='A' and col5='test'


应该怎么样建好比较有效率的组合索引呀?

我现在是分别建4个

col1,col5
col2,col5
col3,col5
col4,col5

但这样col5 不是会出现多个索引里面了,不知道会不会影响效率
大家有什么更好的方法吗?
...全文
302 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rmn190 2014-11-14
  • 打赏
  • 举报
回复
引用 8 楼 ac1998 的回复:
2楼方案完全不对。 col1,col5 col2,col5 col3,col5 col4,col5 按照这样建立5个索引就好了。 另外还可以单独建立一个col5索引。 这些索引之间不会相互影响的。 5维索引,基本等于没有建立索引。
"5维索引,基本等于没有建立索引", 我想了解下, 具体原因是?
ac1998 2014-11-14
  • 打赏
  • 举报
回复
没有哪家数据库的高维索引效果好的。1维和2维还是有保障的。
ac1998 2014-11-14
  • 打赏
  • 举报
回复
2楼方案完全不对。 col1,col5 col2,col5 col3,col5 col4,col5 按照这样建立5个索引就好了。 另外还可以单独建立一个col5索引。 这些索引之间不会相互影响的。 5维索引,基本等于没有建立索引。
rucypli 2014-11-03
  • 打赏
  • 举报
回复
如果col5的区分度比较大 可以只建立一个col5的索引 其他都可以不要
h1048576 2014-11-03
  • 打赏
  • 举报
回复
这样(col5,col1,col2,col3,col4)建立联合索引
believe218 2014-11-03
  • 打赏
  • 举报
回复
因為表裏有7千多萬筆記錄 單以col5分索引一個區間就有上千萬筆還是不夠噢 这样(col5,col1,col2,col3,col4)建立联合索引 這樣的話,where col5='test' and col2='A' 的話就只能用到col5了,就起不到組合的條件了
Rotel-刘志东 2014-11-01
  • 打赏
  • 举报
回复
(col1,col2,col3,col4,col5)建立联合索引
believe218 2014-11-01
  • 打赏
  • 举报
回复
实在没办法,估计也就只能这样了,因为有时条件组合比较多,这样col5出现在多个索引里,不知道会不会有很多沉余的问题 呀
ACMAIN_CHM 2014-11-01
  • 打赏
  • 举报
回复
引用
我现在是分别建4个 col1,col5 col2,col5 col3,col5 col4,col5
这个应该是最优查询速度的方案了。
believe218 2014-11-01
  • 打赏
  • 举报
回复
where col1='A' and col5='test' 好像只用到了col1索引,col5没用到 where col2='A' and col5='test' 不会使用索引 where col3='A' and col5='test' 不会使用索引 where col4='A' and col5='test' 不会使用索引

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧