永发信息网

300多列,where a=xxx,b=xxx,c=xxx如何建索引问题?

答案:2  悬赏:20  手机版
解决时间 2021-01-27 15:28
300多列,where a=xxx,b=xxx,c=xxx如何建索引问题?
最佳答案
建索引的目的就是要减少磁盘IO,所以并不是组合索引比单列索引就好,这个要根据需要,在最常见的列和选择率最高(即选出得少)的列优选几个做下单列索引试试追问首先谢谢回答~您说的也是常用的,我也想到过~~但我不知道能否能再有些其他更好的方法?追答索引并不能包办所有性能问题,你可以从更多方面来考虑,不知道你的实际需求所以不好建议
稍微举几个例子吧
1、需要查询月统计、季统计和年统计可以建一个月统计表
2、学生信息中除了学号与姓名经常其它表联合使用,而其它列只在查询学生个人信息才用,此时可把学生信息表一分为2,甚至更多,其中1个表只有学号与姓名,这种是横向划分
3、譬如流水表多以时间为查询条件,那可以以日为划分列建立分区表追问谢谢,不知道能否留个Q Q,交流请教呢?~如果方便的话还请私信我~追答QQ不对外公开的,就在这交流也挺好
全部回答
如果查询的where中列的顺序是一致的,那么就建一个联合索引就可以了

create index idx_xxxx on tablexxx (a,b,c,...);追问当然不是这么简单啦~~不好意思,没有表达清楚~~~
建立联合索引是肯定的,但他有些是不规律的,例如你的索引是(a,b,c)还有个(c,d)
那你where a=xxx and c=xxx,是可以用上索引的,但where语句再复杂些索引就失效了~追答
那只能:
找出现多的组合,建立联合索引。
对于无法建立联合索引的,就建上单键索引。
然后交给数据库的查询优化器去选择用哪个索引吧。追问首先谢谢回答~您说的也是常用的,我也想到过~~但我不知道能否能再有些其他更好的方法?追答应该是没有。

你的一个表搞这么多列,这不是一个好的设计。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
要除去氯气中少量的氯化氢应用下面哪一种试剂
相异的意思是什么啊?知道的请说下!
宠物龙猫多少钱一只
深圳社保卡可以转东莞吗?
烧水时,通常在开水壶上加上盖子水蒸气比开水
当别人问你 想我没 怎么幽默回答
巧丸的意思是什么啊?知道的请说下!
按市政公用设施齐全程度和环境质量等分类,居
上海东方外国语学校有国际班吗?有谁了解吗给
我问一个女孩问她做什么工作。她说我去就知道
同德县城中心幼儿园地址在什么地方,想过去办
手动档爬山路注意事项
0的平方根和立方根是多少
下列关于细胞分裂与生物遗传关系的叙述,不正
战地3这什么意思?
推荐资讯
鼓山开车怎么走
攒沅的意思是什么啊?知道的请说下!
长的像南瓜,味道像萝卜的食物是什么?
不足轻重的意思是什么啊?知道的请说下!
Up till now有这种说法吗?Up till now是不是
苹果官方授权维修店需要什么手续
乐器-笙是什么样的?
我想开一个韩式快餐不知道选哪家好利润高吗、
以ment结尾的形容词
长期痰多怎么办
面部骨折一般多久可以康复啊,有没有什么营养
之凡艺术画廊地址在什么地方,想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?