精华内容
下载资源
问答
  • MYSQL索引的基本原则

    2018-05-28 18:32:02
    sql的索引选取原则1、 表的某个字段值得离散度越高,该字段越适合选作索引的关键字。主键字段以及唯一性约束字段适合选作索引的关键字,原因就是这些字段的值非常离散。尤其是在主键字段创建索引时,cardinality...
    sql的索引选取原则


    1、 表的某个字段值得离散度越高,该字段越适合选作索引的关键字。主键字段以及唯一性约束字段适合选作索引的关键字,原因就是这些字段的值非常离散。尤其是在主键字段创建索引时,cardinality(基数,集的势)的值就等于该表的行数。MySQL在处理主键约束以及唯一性约束时,考虑周全。数据库用户创建主键约束的同时,MySQL自动创建主索引(primary index),且索引名称为Primary;数据库用户创建唯一性索引时,MySQL自动创建唯一性索引(unique index),默认情况下,索引名为唯一性索引的字段名。

    2、 占用存储空间少的字段更适合选作索引的关键字。例如,与字符串相比,整数字段占用的存储空间较少,因此,较为适合选作索引关键字。

    3、 存储空间固定的字段更适合选作索引的关键字。与text类型的字段相比,char类型的字段较为适合选作索引关键字。

    4、 Where子句中经常使用的字段应该创建索引,分组字段或者排序字段应该创建索引,两个表的连接字段应该创建索引。

    5、 更新频繁的字段不适合创建索引,不会出现在where子句中的字段不应该创建索引。

    6、 最左前缀原则。

    7、 尽量使用前缀索引。

    引入索引的目的就是提高数据的检查效率,因此索引关键字的选择与select语句息息相关。这句话有两个含义:一是,select语句的设计可以决定索引的设计;索引的设计也同样影响着select语句的设计。例如原则1与原则2,可以影响select语句的设计;而select语句中的where子句、group by子句以及,又可以影响索引的设计。两个表的连接字段应该创建索引,外键约束一经创建,MySQL会自动地创建与外键相对应的索引,这是由于外键字段通常是两个表的连接字段。

      复合索引还有一个优点,它通过被称为“最左前缀”(leftmost prefixing)的概念体现出来的。假设向一个表的多个字段(例如fristnamelastnameaddress)创建复合索引(索引名为fname_lname_address.where查询条件是以下各种字段的组合是,MySQL将使用fname_lname_address索引。其他情况将无法使用fname_lname_address索引。可以理解:一个复合索引(firstnamelastnameaddress)等效于(firstnamellastnameage)、(firstnamelastname)以及(firstname)三个索引。基于最做前缀原则,应尽量避免创建重复的索引,例如,创建了fname_lname_address索引后,就无需再first_name子段上单独创建一个索引。

     

    如果数据库表的存储引擎是MyISAM,那么创建主键的约束的同时,MySQL会自动创建主键索引。如果数据库表的存储引擎是InnoDB,那么创建主键约束的同时,MySQL会自动创建聚簇索引。

     MySQL还支持全文索引(fulltext),当查询数据量大的字符串信息时,使用全文索引可以大幅提升字符串的检索效率。需要注意的是,全文索引只能创建在charvarchar或者text字符串类型的字段上,且全文索引不支持前缀索引。



    在某些情况下,or条件可以避免全表扫描的。

    1 .where 语句里面如果带有or条件, myisam表能用到索引, innodb不行。

    2 .必须所有的or条件都必须是独立索引

    3. 用UNION替换OR (适用于索引列)

    4. 用in来替换or





    展开全文
  • Oracle创建索引的基本规则   一、B-Tree索引 1. 选择索引字段的原则: 在WHERE子句中最频繁使用的字段  联接语句中的联接字段  选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性

    原帖地址:http://www.2cto.com/database/201305/211767.html

    最近拜读的一篇文章。

    Oracle创建索引的基本规则
     
    一、B-Tree索引
    1.  选择索引字段的原则:
    在WHERE子句中最频繁使用的字段  
     联接语句中的联接字段 
    选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很好) 
    Oracle在UNIQUE和主键字段上自动建立索引 
    在选择性很差的字段上建索引只有在这个字段的值分布非常倾斜的情况下才有益(在这种情况下,某一,两个字段值比其它字段值少出现很多) 
    不要在很少独特值的字段上建B-TREE索引,在这种情况下,你可以考虑在这些字段上建位图索引.在联机事务处理环境下,并发性非常高,索引经常被修改,所以不应该建位图索引 
    不要在经常被修改的字段上建索引.当有UPDATE,DELETE,INSETT操作时,ORACLE除了要更新表的数据外,同时也要更新索引,而且就象更新数据一样,或产生还原和重做条目 
    不要在有用到函数的字段上建索引,ORACLE在这种情况,优化器不会用到索引,除非你建立函数索引 
    可以考虑在外键字段上建索引,这些索引允许当在主表上UPDATE,DELETE操作时,不需要共享子表的锁,这非常适用于在父表和子表上有很多并发的INSERT,UPDATE和DELETE操作的情况 
    当建立索引后,请比较一下索引后所获得的查询性能的提高和UPDATE,DELETE,INSERT操作性能上的损失,比较得失后,再最后决定是否需建立这个索引 
     2.  选择建立复合索引
     复合索引的优点:
    改善选择性:复合索引比单个字段的索引更具选择性  
     减少I/O:如果要查询的字段刚好全部包含在复合索引的字段里,则ORACLE只须访问索引,无须访问表 
    什么情况下优化器会用到复合索引呢?
           (a) 当SQL语句的WHERE子句中有用到复合索引的领导字段时,ORACLE优化器会考虑用到复合索引来访问.
           (b) 当某几个字段在SQL语句的WHERE子句中经常通过AND操作符联合在一起使用作为过滤谓词,并且这几个字段合在一起时选择性比各自单个字段的选择性要更好时,可
           能考虑用这几个字段来建立复合索引.
           (c) 当有几个查询语句都是查询同样的几个字段值时,则可以考虑在这几个字段上建立复合索引.
    复合索引字段排序的原则:
    确保在WHERE子句中使用到的字段是复合索引的领导字段  
     如果某个字段在WHERE子句中最频繁使用,则在建立复合索引时,考虑把这个字段排在第一位(在CREATE INDEX语句中)  
     如果所有的字段在WHERE子句中使用频率相同,则将最具选择性的字段排在最前面,将最不具选择性的字段排在最后面  
     如果所有的字段在WHERE子句中使用频率相同,如果数据在物理上是按某一个字段排序的,则考虑将这个字段放在复合索引的第一位 
    二、位图索引
    什么情况下位图索引能够改善查询的性能呢?
    WHERE子句包含多个谓词于中低基数的字段  
     单个的谓词在这些中低基数的字段上选取大量的行  
     已经有位图索引创建于某些或全部的这些中低基数的字段上 
    被查询的表包含很多行 
    可以在单一个表上建立多个位图索引,因此,位图索引能够改善包含冗长WHERE子句的复杂查询的性能,在合计查询和星形模型的联接查询语句中,位图索引也可以提供比较优良的性能
    位图索引与B-TREE索引的比较
    位图索引更节省存储空间 
    位图索引比较适用于数据仓库环境,但不适于联机事务处理环境.在数据仓库环境,数据维护通常上通过批量INSERT和批量UPDATE来完成的,所以索引的维护被延迟直到DML操作结束.举例:当你批量插入1000行数据时,这些插入的行被放置到排序缓存中(SORT BUFFER),然后批处理更新这1000个索引条目,所以,每一个位图段在每一个DML操作中只需更新一次,即使在那个位图段里有多行被更新 
    一个键值的压缩位图是由一个或多个位图段所组成,每一个位图段大约相当于半个BLOCK SIZE那么大,锁的最小粒度是一个位图段,在联机事务处理环境,如果多个事务执行同时的更新(即并发的更新),使用位图索引就会影响UPDATE,INSERT,DELETE性能了 
    一个B-TREE索引的条目只包含一个ROWID,因此,当一个索引条目被锁定,即一行被锁定.但是对于位图索引, 一个索引条目潜在地有可能包含一段ROWID(即某一个范围内的ROWID,有多个ROWID),当一个位图索引条目被锁定时,则这个条目包含的那一段ROWID都被锁定,从而影响并发性.当一个位图段内的ROWID的数量越多时,并发性就越差.虽然如此,对于BULK INSERT,UPDATE和DELETE,位图索引的性能还是比B-TREE索引要好.
    三、索引和NULL
            NULL值在索引中是被看做一个独特值的除非当一个索引的两行或多行的NON-NULL值是相等的情况下.在那种情况下,行被看做是相等的,因此,唯一索引不允许行包含空值以怕被看做是相等的.但是,当所有的行都是空值时,这个规则就不适用.Oracle并不索引所有健值都为NULL的表的行,除非是位图索引或当主键字段值是NULL时
    四、建立索引常用的规则如下
    表的主键、外键必须有索引; 
    数据量超过300的表应该有索引; 
    经常与其他表进行连接的表,在连接字段上应该建立索引; 
    经常出现在Where子句中的字段,特别是大表的字段,应该建立索引; 
    索引应该建在选择性高的字段上; 
    索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 
    复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替: 
            A、正确选择复合索引中的主列字段,一般是选择性较好的字段;
            B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
            C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
            D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
            E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
    频繁进行数据操作的表,不要建立太多的索引; 
    删除无用的索引,避免对执行计划造成负面影响; 
            以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。
     
     
    创建Oracle索引的7个注意事项
    在创建Oracle索引时,有一些问题使我们需要注意的,下面就为您介绍创建Oracle索引的一些注意事项,希望对您学习创建Oracle索引方面能有所帮助。
    1、一般来说,不需要为比较小的表创建索引;
    2、即使是大表,如果经常需要查询的数据不超过10%到15%的话,那就没有必要为其建立索引的必要。因为此时建立索引的开销可能要比性能的改善大的多。这个比例只是一个经验的数据。如果数据库管理员需要得出一个比较精确的结论,那么就需要进行测试分析。
    3、如对于一些重复内容比较少的列,特别是对于那些定义了唯一约束的列。在这些列上建立索引,往往可以起到非常不错的效果。如对于一些null值的列与非Null值的列混合情况下,如果用户需要经常查询所有的非Null值记录的列,则最好为其设置索引。如果经常需要多表连接查询,在用与连接的列上设置索引可以达到事半功倍的效果。
    4、数据库管理员,需要隔一段时间,如一年,对数据库的索引进行优化。该去掉的去掉,该调整的调整,以提高数据库的性能。
    5、通常来说,表的索引越多,其查询的速度也就越快。但是,表的更新速度则会降低。这主要是因为表的更新(如往表中插入一条记录)速度,反而随着索引的增加而增加。这主要是因为,在更新记录的同时需要更新相关的索引信息。为此,到底在表中创建多少索引合适,就需要在这个更新速度与查询速度之间取得一个均衡点。
    6、对于一些数据仓库或者决策型数据库系统,其主要用来进行查询。相关的记录往往是在数据库初始化的时候倒入。此时,设置的索引多一点,可以提高数据库的查询性能。同时因为记录不怎么更新,所以索引比较多的情况下,也不会影响到更新的速度。即使在起初的时候需要导入大量的数据,此时也可以先将索引禁用掉。等到数据导入完毕后,再启用索引。可以通过这种方式来减少索引对数据更新的影响。相反,如果那些表中经常需要更新记录,如一些事务型的应用系统,数据更新操作是家常便饭的事情。此时如果在一张表中建立过多的索引,则会影响到更新的速度。
    7、关于位图索引。
    基数是位图索引中的一个基本的定义,它是指数据库表中某个字段内容中不重复的数值。如在员工信息表中的性别字段,一般就只有男跟女两个值,所以,其基数为2;婚姻状况字段的话,则其只有已婚、未婚、离婚三种状态,其基数就为3;民族一览内也是只有有限的几个值。
     
     
    怎样建立最佳索引?
     
    1、明确地创建索引
    create index index_name on table_name(field_name)
    tablespace tablespace_name
    pctfree 5
    initrans 2
    maxtrans 255
    storage
    (
    minextents 1
    maxextents 16382
    pctincrease 0
    );
     
    2、创建基于函数的索引
    常用与UPPER、LOWER、TO_CHAR(date)等函数分类上,例:
    create index idx_func on emp(UPPER(ename)) tablespace tablespace_name;
     
    3、创建位图索引
    对基数较小,且基数相对稳定的列建立索引时,首先应该考虑位图索引,例:
    create bitmap index idx_bitm on class (classno) tablespace tablespace_name;
     
    4、明确地创建唯一索引
    可以用create unique index语句来创建唯一索引,例:
    create unique index dept_unique_idx on dept(dept_no) tablespace idx_1;
     
    5、创建与约束相关的索引
    可以用using index字句,为与unique和primary key约束相关的索引,例:
    alter table table_name
    add constraint PK_primary_keyname primary key(field_name)
    using index tablespace tablespace_name;
     
    如何创建局部区索引?
    1)基础表必须是分区表
    2)分区数量与基础表相同
    3)每个索引分区的子分区数量与相应的基础表分区相同
    4)基础表的自分区中的行的索引项,被存储在该索引的相应的自分区中,例如
    create index TG_CDR04_SERV_ID_IDX on TG_CDR04(SERV_ID)
    Pctfree 5
    Tablespace TBS_AK01_IDX
    Storage(
    MaxExtents 32768
    PctIncrease 0
    FreeLists 1
    FreeList Groups 1
    )
    local
    /
     
    如何创建范围分区的全局索引?
    基础表可以是全局表和分区表
    create index idx_start_date on tg_cdr01(start_date)
    global partition by range(start_date)
    (partition p01_idx vlaues less than ('0106')
    partition p01_idx vlaues less than ('0111')
    ...
    partition p01_idx vlaues less than ('0401'))
    /
     
    如何重建现存的索引?
    重建现存的索引的当前时刻不会影响查询
    重建索引可以删除额外的数据块
    提高索引查询效率
    alter index idx_name rebuild nologging;
    对于分区索引
    alter index idx_name rebuild partition partition_name nologging;
     
    删除索引的原因?
    1)不再需要的索引
    2)索引没有针对其相关的表所发布的查询提供所期望的性能改善
    3)应用没有用该索引来查询数据
    4)该索引无效,必须在重建之前删除该索引
    5)该索引已经变的太碎了,必须在重建之前删除该索引
    语句:
    drop index idx_name;
    drop index idx_name partition partition_name;
     
    建立索引的代价?
    基础表维护时,系统要同时维护索引,不合理的索引将严重影响系统资源,
    主要表现在CPU和I/O上。
    插入、更新、删除数据产生大量db file sequential read锁等待。

    展开全文
  • 基本准则:1、选择唯一性索引;值是唯一,例如学生表中学号2、为经常需要排序、分组和联合操作字段建立索引;经常需要order by、group by、distinct和union等操作字段,排序操作费时。建立索引后可以有效...

    基本准则:

    1、选择唯一性索引;

    值是唯一的,例如学生表中的学号

    2、为经常需要排序、分组和联合操作的字段建立索引;

    经常需要order by、group by、distinct和union等操作的字段,排序操作费时。建立索引后可以有效避免排序操作。

    3、为经常作为查询条件的字段建立索引;

    如果某个字段经常作为查询条件,那么该字段的查询速度会影响整个表的查询速度。因此,为这样的字段建立索引,可以提供整个表的查询速度。

    4、限制索引的数目;

    索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。修改表时,对索引的重构和更新很麻烦。索引越多,更新表越费时。

    5、尽量使用数据量少的索引;

    如果索引的值很长,那么查询的速度会受到影响。

    6、尽量使用前缀来索引;

    如果索引字段的值很长,最好使用值的前缀来索引。

    7、删除不再使用或很少使用的索引

    其他原则:

    1、最左匹配原则

    MySQL会一直向右匹配,直到遇到范围查询(如、between、like)就停止匹配。比如 a =1 and b = 2 and c > 3 and d = 4,如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)顺序的索引,则都可以用到,且a,b,d的顺序可以任意调整。

    2、= 和 in 可以乱序

    比如 a = 1 and b = 2 and c =3,建立(a,b,c)索引,a,b,c可以任意顺序,MySQL的查询优化器会帮你优化成索引可以识别的形式。

    3、尽量选择区分度高的列作为索引

    区分度计算公式:count(distinct(col)) / count(*),表示字段不重复的比例,比例越大,扫描的记录数越少。

    4、索引列不能参与计算,保持“列干净”

    比如 from_unixtime(create_time)= ‘2018-07-25’ 就不能用到索引,因为,B+树中存的是数据表中的字段值,但进行检索时,需要把所有元素都应用函数才能比较,成本太大。语句应该写成 create_time = unix_timestamp(‘2018-07-25’)

    5、尽量的扩展索引,不要新建索引

    哪些字段适合建立索引?

    表的主键、外键;值唯一;数据量小;区分度高;经常被用作查询条件;经常需要作排序、分组、联合操作的字段;

    哪些字段不适合建立索引?

    数据量大(如text类型字段)、区分度低,不经常被使用的字段;

    参考:

    http://book.51cto.com/art/201012/240955.htm

    https://blog.csdn.net/u013412790/article/details/51612304

    展开全文
  • 1.选择索引字段的原则: 在WHERE子句中最频繁使用字段 联接语句中联接字段 选择高选择性字段(如果很少字段拥有相同值,即有很多独特值,则选择性很好) Oracle在UNIQUE和主键字段上自动建立索引 在选择性...

    1.  选择索引字段的原则:

    • 在WHERE子句中最频繁使用的字段 
    •  联接语句中的联接字段
    • 选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很好)
    • Oracle在UNIQUE和主键字段上自动建立索引
    • 在选择性很差的字段上建索引只有在这个字段的值分布非常倾斜的情况下才有益(在这种情况下,某一,两个字段值比其它字段值少出现很多)
    • 不要在很少独特值的字段上建B-TREE索引,在这种情况下,你可以考虑在这些字段上建位图索引.在联机事务处理环境下,并发性非常高,索引经常被修改,所以不应该建位图索引
    • 不要在经常被修改的字段上建索引.当有UPDATE,DELETE,INSETT操作时,ORACLE除了要更新表的数据外,同时也要更新索引,而且就象更新数据一样,或产生还原和重做条目
    • 不要在有用到函数的字段上建索引,ORACLE在这种情况,优化器不会用到索引,除非你建立函数索引
    • 可以考虑在外键字段上建索引,这些索引允许当在主表上UPDATE,DELETE操作时,不需要共享子表的锁,这非常适用于在父表和子表上有很多并发的INSERT,UPDATE和DELETE操作的情况
    • 当建立索引后,请比较一下索引后所获得的查询性能的提高和UPDATE,DELETE,INSERT操作性能上的损失,比较得失后,再最后决定是否需建立这个索引 

      2.  选择建立复合索引

       复合索引的优点:

      • 改善选择性:复合索引比单个字段的索引更具选择性 
      •  减少I/O:如果要查询的字段刚好全部包含在复合索引的字段里,则ORACLE只须访问索引,无须访问表

      什么情况下优化器会用到复合索引呢?

             (a) 当SQL语句的WHERE子句中有用到复合索引的领导字段时,ORACLE优化器会考虑用到复合索引来访问.

             (b) 当某几个字段在SQL语句的WHERE子句中经常通过AND操作符联合在一起使用作为过滤谓词,并且这几个字段合在一起时选择性比各自单个字段的选择性要更好时,可

             能考虑用这几个字段来建立复合索引.

             (c) 当有几个查询语句都是查询同样的几个字段值时,则可以考虑在这几个字段上建立复合索引.

      复合索引字段排序的原则:

      • 确保在WHERE子句中使用到的字段是复合索引的领导字段 
      •  如果某个字段在WHERE子句中最频繁使用,则在建立复合索引时,考虑把这个字段排在第一位(在CREATE INDEX语句中) 
      •  如果所有的字段在WHERE子句中使用频率相同,则将最具选择性的字段排在最前面,将最不具选择性的字段排在最后面 
      •  如果所有的字段在WHERE子句中使用频率相同,如果数据在物理上是按某一个字段排序的,则考虑将这个字段放在复合索引的第一位

      二、位图索引

      什么情况下位图索引能够改善查询的性能呢?

      • WHERE子句包含多个谓词于中低基数的字段 
      •  单个的谓词在这些中低基数的字段上选取大量的行 
      •  已经有位图索引创建于某些或全部的这些中低基数的字段上
      • 被查询的表包含很多行
      • 可以在单一个表上建立多个位图索引,因此,位图索引能够改善包含冗长WHERE子句的复杂查询的性能,在合计查询和星形模型的联接查询语句中,位图索引也可以提供比较优良的性能

      位图索引与B-TREE索引的比较

      • 位图索引更节省存储空间
      • 位图索引比较适用于数据仓库环境,但不适于联机事务处理环境.在数据仓库环境,数据维护通常上通过批量INSERT和批量UPDATE来完成的,所以索引的维护被延迟直到DML操作结束.举例:当你批量插入1000行数据时,这些插入的行被放置到排序缓存中(SORT BUFFER),然后批处理更新这1000个索引条目,所以,每一个位图段在每一个DML操作中只需更新一次,即使在那个位图段里有多行被更新
      • 一个键值的压缩位图是由一个或多个位图段所组成,每一个位图段大约相当于半个BLOCK SIZE那么大,锁的最小粒度是一个位图段,在联机事务处理环境,如果多个事务执行同时的更新(即并发的更新),使用位图索引就会影响UPDATE,INSERT,DELETE性能了
      • 一个B-TREE索引的条目只包含一个ROWID,因此,当一个索引条目被锁定,即一行被锁定.但是对于位图索引, 一个索引条目潜在地有可能包含一段ROWID(即某一个范围内的ROWID,有多个ROWID),当一个位图索引条目被锁定时,则这个条目包含的那一段ROWID都被锁定,从而影响并发性.当一个位图段内的ROWID的数量越多时,并发性就越差.虽然如此,对于BULK INSERT,UPDATE和DELETE,位图索引的性能还是比B-TREE索引要好

    转载于:https://www.cnblogs.com/riasky/p/3458832.html

    展开全文
  • 1. 选择索引字段的原则: 在WHERE子句中最频繁使用字段 联接语句中联接字段 选择高选择性字段(如果很少字段拥有相同值,即有很多独特值,则选择性很好) Oracle在UNIQUE和主键字段上自动建立索引 在选择性很...
  • 创建高性能的索引 索引基础 索引有很多类型,Mysql是使用B+...MyISAM索引通过数据到物理位置引用被索引的行,InnoDB根据主键引用被索引的行 全值匹配:指的是和索引中所有列进行匹配。比如EXPLAIN 中的type=index ...
  • 作者|今天你做题了吗来源 |cnblogs....但也不是所有场景下都需要自增主键,比如有些业务场景的需求是只有一个索引并且该索引必须是唯一索引,由于没有其他索引,就不用考虑辅助索引的存储空间消耗,可以直接将...
  • Oracle 创建索引的基本规则总结       一、B-Tree索引 1. 选择索引字段的原则: 在WHERE子句中最频繁使用的字段 联接语句中的联接字段选择高选择性的字段(如果很少的字段...
  • 基本准则: 1、选择唯一性索引;  值是唯一,例如学生表中学号 2、为经常需要排序、分组和联合操作字段建立索引;  经常需要order by、group by、distinct和union等操作字段,排序操作费时。建立索引...
  • 创建索引原则

    2011-02-25 21:25:34
    Oracle提供了大量索引选项。知道在给定条件下使用哪个选项对于一个应用程序性能来说非常重要。一个错误选择可能会引发死锁,并导致数据库性能急剧...主要有以下内容:[1] 基本的索引概念 查询DBA_INDEX...
  • mysql:索引创建和使用的经验原则 本人并不是一个专业的dba,对于索引这么宏大的...索引的基本常识 让我们用官网上面的第一段话开头:indexes are used to find rows with specific column values quickly. Without an ind
  • 索引的基本使用

    2019-08-22 15:26:11
    1.索引的使用场景: 检索(查询语句where),排序(查询语句order by),覆盖(select后面要查询的字段)这三个。...2.索引的使用原则:列独立,左原则,or原则(or的两边必须有索引)。 创建索引 删除索引 ...
  • 1.MySQL在创建数据表时候创建索引 在MySQL中创建表时候,可以直接创建索引基本的语法格式如下: CREATE TABLE 表名(字段名 数据类型 [完整性约束条件], [UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY ...
  • 六、mysql索引注意:创建索引的基本原则:1、索引要建在使用较多的字段上2、尽量不要在相同值较多的字段上建立索引,比如姓名3、对于经常进行数据存取的字段不要建立索引4、对于有外键引用的表,在主键和外键上建立...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 331
精华内容 132
关键字:

创建索引的基本原则