创建索引原则及SQL添加索引

一、数据库建立索引的原则 

1.确定针对该表的操作是大量的查询操作还是大量的增删改操作。 

2.尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。 

3.尝试建立复合索引来进一步提高系统性能。修改复合索引将消耗更长时间,同时,复合索引也占磁盘空间。 

4.对于小型的表,建立索引可能会影响性能 

5.应该避免对具有较少值的字段进行索引。 

6.避免选择大型数据类型的列作为索引。 

A.mysql索引建立的原则 

索引查询是数据库中重要的记录查询方法,要不要进入索引以及在那些字段上建立索引都要和实际数据库系统的查询要求结合来考虑,下面给出实际中的一些通用的原则: 

1. 在经常用作过滤器的字段上建立索引; 

2. 在SQL语句中经常进行GROUP BY、ORDER BY的字段上建立索引; 

3. 在不同值较少的字段上不必要建立索引,如性别字段; 

4. 对于经常存取的列避免建立索引; 

5. 用于联接的列(主健/外健)上建立索引; 

6. 在经常存取的多个列上建立复合索引,但要注意复合索引的建立顺序要按照使用的频度来确定; 

7. 缺省情况下建立的是非簇集索引,但在以下情况下最好考虑簇集索引,如:含有有限数目(不是很少)唯一的列;进行大范围的查询;充分的利用索引可以减少表扫描I/0的次数,有效的避免对整表的搜索。当然合理的索引要建立在对各种查询的分析和预测中,也取决于DBA的所设计的数据库结构。 

B.oracle 索引建立的若干原则 

       我们首先要考虑的是数据量,数据量级别的不同,要考虑的问题有很大区别。几千条记录建不建索引其实都无所谓了,差个几豪秒也感觉不出来,但数据量一旦要增长到百万, 千万级别,索引的重要性就体现出来了。没有索引一个查询可能要几个小时甚至几天才能出来,对数据库的影响不仅仅是查询速度的降低, 在io 上的花费和对数据库连接资源的占用甚至会拖跨数据库。那么怎样建立索引,建立什么类型的索引呢,应该按照几个方面来考虑。 

1. 先要了解业务需求,总结出应用会按照哪几个字段来进行查询。例如一个人员查询系统可能会按照(姓名,身份证件号码,性别,住址,民族等),当然可能是几个字段的组合查询。 

2. 确定了第一步后要估计数据的分布。相同值有多少,是不是均匀。如姓名字段就会有大量的重复情况;性别可能只有两个值(1,2 分别代表男,女),民族会有56 个。 

3. 确定索引的类型。选择性高的字段建立B- 树索引最好,如果数据量太大,可考虑把索引分区,在并发情况下通常会表现很好。相当于把一棵很大的B树拆开成了多棵小树。只有几个值的字段如性别并且数据分布比较均匀,查询的平均命中率要是非常高就不需要建立索引,否则可以建立位图索引(但会影响并发)。 

oracle建立索引原则 

1.索引需要平衡query和DML的需要,常用于(子)查询的表应建立索引; 

2.把索引建到不同的表空间中; 

3.用统一的extent大小;

4.五个block的倍数或者tablespace指定的MINIMUM EXTENT的倍数; 

5.创建索引考虑用NOLOGGING参数,重建索引的时候也一样; 

6.创建索引时INITRANS值应该比相应的table的值高一些; 

7.对常用SQL语句的where条件中的列建立唯一索引或组合索引,组合条件查询中相应的组合索引更有效; 

8.对于组合索引,根据列的唯一值概率,安排索引顺序; 

9.如果一个列具有很低的数据基数,并且或者可具有空值,不应作为索引列; 

10.如果where语句中不得不对查询列采用函数查询,如upper函数,最好建立相应函数索引; 

11.对于低基数集的列,并包含OR等逻辑运算,考虑用Bitmap索引,对于从大量行的表中返回大量的行时也可以考虑Bitmap索引; 

12.避免在有大量并发DML运算的表中使用Bitmap索引;

二、使用CREATE 语句创建索引

CREATE INDEX index_name ON table_name(column_name,column_name) include(score)

普通索引

CREATE UNIQUE INDEX index_name ON table_name (column_name) ;

非空索引

CREATE PRIMARY KEY INDEX index_name ON table_name (column_name) ;

主键索引

使用ALTER TABLE语句创建索引

alter table table_name add index index_name (column_list) ;

alter table table_name add unique (column_list) ;

alter table table_name add primary key (column_list) ;

删除索引

drop index index_name on table_name ;

alter table table_name drop index index_name ;

alter table table_name drop primary key ;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343