社区
基础和管理
帖子详情
数据库索引添加原则?
amdgaming
2011-08-02 10:12:36
比如我有一张业务主表,字段比较多
现在我有很多报表,我需要按照 某个时间(比如创建时间,分配时间,) 查询 这个时候我加索引
但是这样的情况非常多,我又不能每个报表都加一个索引吧,经验值不是一个表最多5个索引么?
各位有什么好招啊?
...全文
284
15
打赏
收藏
数据库索引添加原则?
比如我有一张业务主表,字段比较多 现在我有很多报表,我需要按照 某个时间(比如创建时间,分配时间,) 查询 这个时候我加索引 但是这样的情况非常多,我又不能每个报表都加一个索引吧,经验值不是一个表最多5个索引么? 各位有什么好招啊?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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,382
社区成员
95,118
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章