如何建立高效的索引

[复制链接]
查看11 | 回复9 | 2014-3-11 06:00:14 | 显示全部楼层 |阅读模式
比如我有张表A,表里有40个字段如(B,C,D,F,E...),此表是按省份E做的LIST分区,数据量为5000万
现在页面有个查询:
需要用户随意去选这张表的其中30个字段中的若干个或全部,字段顺序不固定,请问我需要对这30个字段都建立索引吗?
这种场景怎样处理,才能保证查询速度快?

回复

使用道具 举报

千问 | 2014-3-11 06:00:14 | 显示全部楼层
只对那些有意义的建立索引。像“性别”这种建了也没用。
回复

使用道具 举报

千问 | 2014-3-11 06:00:14 | 显示全部楼层
要求选择性强的字段必须选择,用户是用户,他想干啥就干啥啊,其实用户的很多需求是没有啥意义的。乱选,选出几十万几百万他会看吗?
回复

使用道具 举报

千问 | 2014-3-11 06:00:14 | 显示全部楼层
newkid 发表于 2013-3-26 22:01
只对那些有意义的建立索引。像“性别”这种建了也没用。

这30个字段里,除了经济行业和经济类型这种重复性大些的字段外,其余25个字段数据基本是不重复的,都需建立索引吗?另外联合索引的效果如何?
回复

使用道具 举报

千问 | 2014-3-11 06:00:14 | 显示全部楼层
dingjun123 发表于 2013-3-26 22:27
要求选择性强的字段必须选择,用户是用户,他想干啥就干啥啊,其实用户的很多需求是没有啥意义的。乱选,选 ...

你的意思是取用户关注的项建索引就行了,那联合索引和单个索引的建立哪个效果好?
回复

使用道具 举报

千问 | 2014-3-11 06:00:14 | 显示全部楼层
sr19830207 发表于 2013-3-27 09:05
你的意思是取用户关注的项建索引就行了,那联合索引和单个索引的建立哪个效果好?

关注的项目建索引,如果其他都是基本不重复的,为什么要建联合索引呢?没有必要啊
索引不可建的太多啊,太多影响DML效率
回复

使用道具 举报

千问 | 2014-3-11 06:00:14 | 显示全部楼层
本帖最后由 chwp 于 2013-3-27 10:57 编辑
首先用户能承受的时间是多少,如果现在能满足,还是不要加了
那么多个项目建索引


还有Top n能用的话。。。

回复

使用道具 举报

千问 | 2014-3-11 06:00:14 | 显示全部楼层
如果你的报表系统给他采用列式数据库就不用担心 用户的 即席查询!
回复

使用道具 举报

千问 | 2014-3-11 06:00:14 | 显示全部楼层
从awr报告里看top sql找where 里用到= > = <=的
回复

使用道具 举报

千问 | 2014-3-11 06:00:14 | 显示全部楼层
选择的字段不一定都会作为查询条件,关键分析where后面的查询条件。对于经常同时出现在条件里的列可以考虑创建复合索引,经常单独出现而且选择性较高的列可以考虑创建单独索引。主要分析各个条件的组合情况和出现频率,本着以创建最少的索引最大限度的提到效率,除了索引之外,sql的写法也是提高性能的关键
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836