社区
基础和管理
帖子详情
数据库索引添加原则?
amdgaming
2011-08-02 10:12:36
比如我有一张业务主表,字段比较多
现在我有很多报表,我需要按照 某个时间(比如创建时间,分配时间,) 查询 这个时候我加索引
但是这样的情况非常多,我又不能每个报表都加一个索引吧,经验值不是一个表最多5个索引么?
各位有什么好招啊?
...全文
331
15
打赏
收藏
数据库索引添加原则?
比如我有一张业务主表,字段比较多 现在我有很多报表,我需要按照 某个时间(比如创建时间,分配时间,) 查询 这个时候我加索引 但是这样的情况非常多,我又不能每个报表都加一个索引吧,经验值不是一个表最多5个索引么? 各位有什么好招啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
amdgaming
2011-08-05
打赏
举报
回复
哈哈 没有高人来回答下啊。////
给小弟解迷津啊
sc1234
2011-08-05
打赏
举报
回复
不建议直接业务表作为查询报表的数据源
索引会增加I/O开销
如果不是数据有实时要求 建议刷一张物化视图作为源
上面你加多索引也无关系
springchina_1
2011-08-04
打赏
举报
回复
实际工作中,如果发现查询速度比较慢,则需要查询哪几个字段,就对这几个字段建立索引
会大大加速
amdgaming
2011-08-03
打赏
举报
回复
[Quote=引用 11 楼 qyweiyy88 的回复:]
索引不是最多建5个,是最好不要超过5个
只要你这5个以上的索引使用率都非常高的话你可以建6个,7个。。。
不过你最好再用下外键,连线等方法试一下
[/Quote]
什么连线 指导下?
amdgaming
2011-08-02
打赏
举报
回复
[Quote=引用 5 楼 yixilan 的回复:]
建索引呗。
比如说:
A报表,用到TIME1,TIME2,就把这两个字段做为一个索引;
B报表,用到TIME3,TIME4,就把这两个字段做为一个索引;
这都没有问题的。
[/Quote]
但是 还有 C ,D,E F G呢
都建? 还是建一个 包含 各种time的 联合索引,。。。。
yixilan
2011-08-02
打赏
举报
回复
建索引呗。
比如说:
A报表,用到TIME1,TIME2,就把这两个字段做为一个索引;
B报表,用到TIME3,TIME4,就把这两个字段做为一个索引;
这都没有问题的。
ma_mh
2011-08-02
打赏
举报
回复
求解?哪种方法比较有效
lyhmy
2011-08-02
打赏
举报
回复
索引不是可以同时建立在几个字段上的么
yixilan
2011-08-02
打赏
举报
回复
加索引的主要目的,是想加快查询速度,是吧?
创建时间,分配时间,有没有一个主要的键呢?源表有没有按照某个时间建分区?
至于索引,我倒觉得,你把几个主要的时间加上索引,是可以的。建个五六个,都没有关系。
再多了也不好。不能都满足。
BenChiM888
2011-08-02
打赏
举报
回复
看你的描述,如果报表能够直接查询的话看样子数据量不是很大,所以你可以试试下面的方法
调用报表的时候
--重建索引
execute immediate 'create index ...';
报表处理逻辑
--删除原来的索引
execute immediate 'drop index ...';
布丁88
2011-08-02
打赏
举报
回复
索引不是最多建5个,是最好不要超过5个
只要你这5个以上的索引使用率都非常高的话你可以建6个,7个。。。
不过你最好再用下外键,连线等方法试一下
BenChiM888
2011-08-02
打赏
举报
回复
那真是没有好办法了,不想建立太多索引,想不出办法了,等楼下回答。
[Quote=引用 9 楼 amdgaming 的回复:]
你用完就删除,而你建索引也蛮慢的,而且还要写到业务里面。似乎不太好啊
[/Quote]
amdgaming
2011-08-02
打赏
举报
回复
你用完就删除,而你建索引也蛮慢的,而且还要写到业务里面。似乎不太好啊
amdgaming
2011-08-02
打赏
举报
回复
[Quote=引用 7 楼 benchim888 的回复:]
组合索引能够用到的规则是必须使用引导列。
如:(a,b,c) 是组合索引的话,A列必须在where条件中使用才可以用到这个索引,只用b或者只用c或者只用b,c 都不可以。
要根据你的实际情况考虑,还是建议你当查询报表的时候 新建索引,查询完毕删除索引。
引用 6 楼 amdgaming 的回复:
引用 5 楼 yixilan 的回复:
建索引呗。
比如说:
A报表,用到TI……
[/Quote]
这样啊,程序逻辑写这个不太好吧。。。。
BenChiM888
2011-08-02
打赏
举报
回复
组合索引能够用到的规则是必须使用引导列。
如:(a,b,c) 是组合索引的话,A列必须在where条件中使用才可以用到这个索引,只用b或者只用c或者只用b,c 都不可以。
要根据你的实际情况考虑,还是建议你当查询报表的时候 新建索引,查询完毕删除索引。
[Quote=引用 6 楼 amdgaming 的回复:]
引用 5 楼 yixilan 的回复:
建索引呗。
比如说:
A报表,用到TIME1,TIME2,就把这两个字段做为一个索引;
B报表,用到TIME3,TIME4,就把这两个字段做为一个索引;
这都没有问题的。
但是 还有 C ,D,E F G呢
都建? 还是建一个 包含 各种time的 联合索引,。。。。
[/Quote]
SQL PDF教程(精通SQL)
通过"精通SQL"教程,你将不仅学会SQL的基本语法,还能深入理解
数据库
设计
原则
、查询优化策略以及实际应用中的最佳实践。这将对你的职业生涯大有裨益,无论是数据分析、软件开发还是
数据库
管理,SQL都是一门不可或缺...
数据库
索引
创建
原则
数据库
索引
创建
原则
、
索引
类型选择、常见的
索引
问题
数据库
索引
的设计
原则
索引
定义:是一个单独的,存储在磁盘上的
数据库
结构,其包含着对数据表里所有记录的引用指针. 为了使
索引
的使用效率更高,在创建
索引
时,必须考虑在哪些字段上创建
索引
和创建什么类型的
索引
。 那么
索引
设计
原则
又...
数据库
索引
设计
原则
综上所述,
索引
的创建过程可以抽象为在上述约束条件下定义
索引
的收益,通过启发式算法计算出在特定约束条件下,整体工作负载收益最大的
索引
集,这也是PawSQL
索引
引擎的内在逻辑。
数据库
建立
索引
的
原则
数据库
建立
索引
的
原则
基础和管理
17,380
社区成员
95,113
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章