我要是将表的所有字段都建成索引,会有什么样的后果?

mysine 2003-03-28 01:04:03
我现在有一个表,数据行数在500百万以上,字段的个数在50-100个,我想利用索引来统计或是查找该表数据,想要让它的速度快一些,可是现在我不能确定将会用到哪些字段,所以我想将所有的字段都建成索引,这样可以吗?
这样会对我对该表的操作时的速度有所提高吗?或是恰恰相反?
...全文
745 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishu1980 2003-03-31
  • 打赏
  • 举报
回复
空间占用倒是小事,反正现在空间很便宜,问题是每个字段都建索引,可能查询会快,但是,添加,删除和更新就有你受的了,想想吧,每添加一条新记录都要插入100个索引键,每删除一条记录也要删除100索引键,而且每个索引键都要先通过检索找到他的位置。更新一条记录也是一样,要先找到100个索引键的原始位置,再把它放到新的位置上。累呀!
developer2002 2003-03-28
  • 打赏
  • 举报
回复
接上,我希望版主应该号召大家,先看书,掌握基本的概念之后,再来问问题,这样问题即可以问的深入,也可以省去大家很多时间去回答垃圾问题.
developer2002 2003-03-28
  • 打赏
  • 举报
回复
'我十分赞同楼主的做法,对于这样一个500万的表,50-100个字段每个字段都给它一个索引.'

自己亲身经历一下,会有更好的感触.
beckhambobo 2003-03-28
  • 打赏
  • 举报
回复
对,过多索引占用空间,这方面要多于考虑。
black_snail 2003-03-28
  • 打赏
  • 举报
回复
index 也是需要STORAGE的,它的存储方式是B+树,相对于表结构,它的空间利用率很差.
supershb 2003-03-28
  • 打赏
  • 举报
回复 1
Limit the Number of Indexes for Each Table
A table can have any number of indexes. However, the more indexes there are, the more overhead is incurred as the table is modified. Specifically, when rows are inserted or deleted, all indexes on the table must be updated as well. Also, when a column is updated, all indexes that contain the column must be updated.

Thus, there is a trade-off between the speed of retrieving data from a table and the speed of updating the table. For example, if a table is primarily read-only, having more indexes can be useful; but if a table is heavily updated, having fewer indexes could be preferable.
___________________________
from :Oracle9i Database Administrator's Guide Release 2 (9.2) Managing Indexes


yuxuan 2003-03-28
  • 打赏
  • 举报
回复
我觉得最好在使用频率比较高的字段上建立索引

有些经常使用的聚集函数Max等所在字段建立索引,Order by频率高的字段建立索引

只作参考,具体需要查看索引工作原理
KingSunSha 2003-03-28
  • 打赏
  • 举报
回复
我觉得你需要系统地了解一下索引的工作原理 :)
jiezhi 2003-03-28
  • 打赏
  • 举报
回复
有句老话:过尤不及。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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