精华内容
下载资源
问答
  • 索引的介绍 索引在MySQL中也叫做“键”,它是一个特殊的文件,它保存着数据表里所有记录的位置信息,更通俗的来说,数据库索引好比是一本书前面的目录,能加快数据库的...主键列会自动创建索引 索引的创建: -- ...
    1. 索引的介绍
      索引在MySQL中也叫做“键”,它是一个特殊的文件,它保存着数据表里所有记录的位置信息,更通俗的来说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
      当数据库中数据量很大时,查找数据会变得很慢,我们就可以通过索引来提高数据库的查询效率。

    2. 索引的使用
      查看表中已有索引:

    show index from 表名;

    说明:
    主键列会自动创建索引

    索引的创建:

    -- 创建索引的语法格式
    -- alter table 表名 add index 索引名[可选](列名, ..)
    -- 给name字段添加索引
    alter table classes add index my_name (name);
    
    

    说明:
    索引名不指定,默认使用字段名

    索引的删除:

    -- 删除索引的语法格式
    -- alter table 表名 drop index 索引名
    -- 如果不知道索引名,可以查看创表sql语句
    show create table classes;
    alter table classes drop index my_name;
    
    
    1. 案例-验证索引查询性能
      创建测试表testindex:
    create table test_index(title varchar(10));
    

    向表中插入十万条数据:

    from pymysql import connect
    def main():
    # 创建Connection连接
    conn = connect(host='localhost',port=3306,database='python',user='root',passwor
    d='mysql',charset='utf8')
    # 获得Cursor对象
    cursor = conn.cursor()
    # 插⼊10万次数据
    for i in range(100000):
    cursor.execute("insert into test_index values('ha-%d')" % i)
    # 提交数据
    conn.commit()
    if __name__ == "__main__":
    main()
    
    

    验证索引性能操作:

    -- 开启运⾏时间监测:
    set profiling=1;
    -- 查找第1万条数据ha-99999
    select * from test_index where title='ha-99999';
    -- 查看执⾏的时间:
    show profiles;
    -- 给title字段创建索引:
    alter table test_index add index (title);
    -- 再次执⾏查询语句
    select * from test_index where title='ha-99999';
    -- 再次查看执⾏的时间
    show profiles;
    

    4.联合索引
    联合索引又叫复合索引,即一个索引覆盖表中两个或者多个字段,一般用在多个字段一起查询的时
    候。

    -- 创建teacher表
    create table teacher
    (
    id int not null primary key auto_increment,
    索引
    84
    name varchar(10),
    age int
    );
    -- 创建联合索引
    alter table teacher add index (name,age);
    

    联合索引的好处:
    减少磁盘空间开销,因为每创建一个索引,其实就是创建了一个索引文件,那么会增加磁盘空间
    的开销。

    1. 联合索引的最左原则
      在使用联合索引的时候,我们要遵守一个最左原则,即index(name,age)支持 name 、name 和 age 组合查
      询,而不支持单独 age 查询,因为没有用到创建的联合索引。
    -- 下⾯的查询使⽤到了联合索引
    select * from stu where name='张三' -- 这⾥使⽤了联合索引的name部分
    select * from stu where name='李四' and age=10 
    -- 这⾥完整的使⽤联合索引,包括 name 和 age 部分
    -- 下⾯的查询没有使⽤到联合索引
    select * from stu where age=10 -- 因为联合索引⾥⾯没有这个组合,只有 name | name age 这两种组合
    
    

    说明:
    在使用联合索引的查询数据时候一定要保证联合索引的最左侧字段出现在查询条件里面,否则联合索引失效

    • MySQL中索引的优点和缺点和使用原则
      优点:
    • 加快数据的查询速度
      缺点:
    • 创建索引会耗费时间和占用磁盘空间,并且随着数据量的增加所耗费的时间也会增加

    使用原则:

    1. 通过优缺点对比,不是索引越多越好,而是需要自己合理的使用。
    2. 对经常更新的表就避免对其进行过多索引的创建,对经常用于查询的字段应该创建索引,
    3. 数据量小的表最好不要使用索引,因为由于数据较少,可能查询全部数据花费的时间比遍历
      索引的时间还要短,索引就可能不会产生优化效果。
    4. 在一字段上相同值比较多不要建立索引,比如在学生表的"性别"字段上只有男,女两个不同值。相反的,在一个字段上不同值较多可是建立索引。
    • 小结
      索引是加快数据库的查询速度的一种手段
      创建索引使用: alter table 表名 add index 索引名[可选] (字段名, xxx);
      删除索引使用: alter table 表名 drop index 索引名;
    展开全文
  • 索引的理解: 索引是对数据库表中的一列或多列的值进行排序的一种数据结构。 索引的作用就类似于书本的目录,新华字典的拼音,偏旁部首的首查字,可以快速的检索到需要 的内容,mysql在300万条记录性能就下降了,...

    索引的理解:

      索引是对数据库表中的一列或多列的值进行排序的一种数据结构。
      索引的作用就类似于书本的目录,新华字典的拼音,偏旁部首的首查字,可以快速的检索到需要的内容,mysql在300万条记录性能就下降了,虽然mysql官方文档说达500万~800万,所以当数据达到几百万的时候,那么索引就很有必要了。
      当表中有大量记录的时候,若要对表进行查询,第一种就是就需要把表中的记录全部取出来,在和查询条件一一对比,然后返回满足条件的记录、这样做就会大大消耗数据库系统的时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中ROWID(相当于页码)快速找到表中的记录。

    语句:

    CREATE TABLE table_name[filed_name data type]
    [unique|fulltext][index|key][index_name](filed_name[length])[asc|desc]

    1. unique|fulltext为可选参数,分别表示唯一索引、全文索引
    2. index和key为同义词,两者作用相同,用来指定创建索引
    3. filed_name为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择
    4. index_name指定索引的名称,为可选参数,如果不指定,默认filed_name为索引值
    5. length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度
    6. asc或desc指定升序或降序的索引值存储

    索引类型:

    一、唯一索引(unique):列的值必须唯一,但允许有空值。如果是组合索引则列值必须唯一

    1)、创建唯一索引

    CREATE UNIQUE INDEX index_name ON table(column(length))

    2)、修改表结构

    ALTER TABLE table_name ADD UNIQUE INDEX index_name ON (column(length))

    3)、创建表时直接指定

    CREATE TABLE `table_name`(
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `code` INT(8) NOT NULL,
    `title` VARCHAR(255) NOTNULL,
    `content` TEXT,
    `time` INT(10) NULL DEFAULT NULL,
    UNIQUE index_name(code)
    );

    二、主键索引(primary key):是一特殊的唯一索引,一个表允许有一个主键,主键要求建表时指定.

    CREATE TABLE `table_name`(
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `code` INT(8) NOT NULL,
    `title` VARCHAR(255) NOTNULL,
    `content` TEXT,
    `time` INT(10) NULL DEFAULT NULL,
    PRIMARY KEY(`id`)
    );

    三、普通索引(index):最基本的索引,没有任何限制。如果是char,varchar类型,length可以小于字段长度、如果是BLOB和TEXT类型,必须指定长度。

    1)、直接创建

    CREATE INDEX index_name ON table(column(length))

    2)、修改表结构的方式添加

    ALTER TABLE table_name ADD INDEX index_name ON (column(length))

    3)、创建表时直接指定

    CREATE TABLE `table_name`(
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `title` VARCHAR(255) NOTNULL,
    `content` TEXT,
    `time` INT(10) NULL DEFAULT NULL,
    PRIMARY KEY(`id`),
    INDEX index_name(title(length))
    );

    4)、删除索引

    DROP INDEX index_name ON table

    四、多列索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段索引才会使用。使用组合索引遵循最左前缀原则
    五、全文索引(fulltext):主要是用来查找文本的关键字,而不是直接与索引中的值比较。fulltext索引跟其他索引大不相同,它更像一个搜索引擎,而不是简单的where语句的参数匹配。fulltext要配合match against操作使用,而不是一般的where语句加like。它可以在create tablealter tablecreate index使用,不过目前只有char varchar text列上可以创建全文索引。

    tip:全文索引只有MyISAM支持,不过在mysql5.6后Innodb也支持了

    1)、创建表的时候添加全文索引


    CREATE TABLE `table_name`(
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `title` VARCHAR(255) NOTNULL,
    `content` TEXT,
    `time` INT(10) NULL DEFAULT NULL,
    FULLTEXT (content)
    );

    2)、修改表结构添加全文索引

    ALTER TABLE table_name ADD FULLTEXT index_name(content)

    3)、直接创建索引

    CREATE FULLTEXT INDEX index_namet ON table_name(content)

    缺点:

    1. 虽然索引大大的提升了查询的速度,同时也降低了对表的增删改的速度,因为更新表,不仅要保存数据,还要保存索引文件
    2. 建立索引会占用磁盘空间。一般不太严重,如果你在一个大表上创建多种组合索引,索引文件会增长很快索引只是提高效率的一个因素,如果有大数据量的表,就要花时间研究建立最优秀的索引,或优化查询语句

    索引方式:

        对于BTREE和HASH索引,当使用=、<=>、IN、IS NULL或者IS NOT NULL操作符时,关键元素与常量值的比较关系对应一个范围条件。Hash索引还有一些其它特征:它们只用于使用=或<=>操作符的等式比较(但很快)。优化器不能使用hash索引来加速ORDER BY操作。(该类索引不能用来按顺序搜索下一个条目)。MySQL不能确定在两个值之间大约有多少行(这被范围优化器用来确定使用哪个索引)。如果你将一个MyISAM表改为hash-索引的MEMORY表,会影响一些查询。只能使用整个关键字来搜索一行。(用B-树索引,任何关键字的最左面的前缀可用来找到行)。

        对于BTREE索引,当使用>、<、>=、<=、BETWEEN、!=或者<>,或者LIKE ‘pattern’(其中 ‘pattern’不以通配符开始)操作符时,关键元素与常量值的比较关系对应一个范围条件。“常量值”系指:查询字符串中的常量、同一联接中的const或system表中的列、无关联子查询的结果、完全从前面类型的子表达式组成的表达式。

    下面是一些WHERE子句中有范围条件的查询的例子。
    下列范围查询适用于 btree索引和hash索引:

    SELECT * FROM t1 WHERE key_col = 1 OR key_col IN (15,18,20);

    下列范围查询适用于btree索引

    SELECT * FROM t1 WHERE key_col > 1 AND key_col < 10;
    SELECT * FROM t1 WHERE key_col LIKE 'ab%' OR key_col BETWEEN 'bar' AND 'foo';

    创建索引原则与使用索引注意事项:

    1. 选择唯一索引

      唯一索引的值是唯一的,可以更快速的通过该索引确定某一条记录

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

      经常需要order by、 group by、distinct和union等操作的字段,排序会浪费很多时间,如果为其建立索引,可以有效避免排序操作

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

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

    4. 限制索引的数目

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

    5. 尽量使用数据量少的索引

      如果索引的值很长,那么查询的速度就会受到影响,例如对一个char(100)类型的字段进行全文检索需要的时间肯定要比char(10)类型的字段需要的时间多得多,并且char(10)全文检索而且可以节省磁盘空间和I/O操作。

    6. 尽量使用前缀来索引

      如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。

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

      表中的数据被大量更新,或者数据使用方式被改变后,原有的一些索引可能不在需要。数据库管理员应当定期找出这些索引,将它们删除。从而减少索引对更新操作的影响

    8. 最左前缀原则,非常重要的一个原则

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

    9. =和in可以乱序

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

    10. 尽量选择区分度高的列作为索引。

      区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就 是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条 记录

    11. 索引列不能参与计算,保持列“干净”。

      select * from users where YEAR(adddate)<'2007';
      将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成:
      select * from users where adddate<‘2007-01-01';

    12. 尽量的扩展索引,不要新建索引。

      比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可

    13. 不使用NOT IN和<>操作

    14. like语句操作

      一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。

    15. 索引列排序

      MySQL查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。

    16. 索引不会包含有NULL值的列

      只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。


    注意:选择索引的最终目的是为了使查询的速度变快。上面给出的原则是最基本的准则,但不能拘泥于上面的准则。读者要在以后的学习和工作中进行不断的实践。根据应用的实际情况进行分析和判断,选择最合适的索引方式。

    索引优化:

    一、导致SQL执行慢的原因

    1. 硬件问题。如网络速度慢,内存不足,I/O吞吐量少,磁盘空间满了等。
    2. 没有索引或索引失效。
    3. 数据过多(分库分表)。
    4. 服务器调优及各个参数设置(调整my.cnf)

    二、分析原因时,一定要找切入点

    1. 先观察,开启慢查询日志,设置相应的阈值(比如超过2秒就是慢SQL),在生产环境上跑一天以后,看看那些SQL比较慢
    2. Explain和慢SQL分析。比如写的烂的SQL语句,索引没有或失效,关联查询太多(有时候是设计缺陷或者不得已的需求)等等
    3. Show Profile是比Explain更进一步的执行细节,可以查询到每一个SQL都干了些什么事,这些事分别花了多少时间
    4. 找DBA或运维对MYsql进行服务器参数调优

    Explain 与 Show Profile详情下两章介绍

    参考:https://blog.csdn.net/GV7lZB0y87u7C/article/details/79969293
       https://blog.csdn.net/u013412790/article/details/51612304

    展开全文
  • Oracle建立索引原则

    千次阅读 2019-10-23 15:46:57
    1.数据库建立索引原则 铁律一:天下没有免费的午餐,使用索引是需要付出代价的。 铁律二:对于查询中很少涉及的列或者重复值比较多的列,不要建立索引。 铁律三:对于按范围查询的列,最好建立索引。 铁律四:...

    1.数据库建立索引的原则

       铁律一:天下没有免费的午餐,使用索引是需要付出代价的。

       铁律二:对于查询中很少涉及的列或者重复值比较多的列,不要建立索引。

       铁律三:对于按范围查询的列,最好建立索引。

       铁律四:表中若有主键或者外键,一定要为其建立索引。

       铁律五:对于一些特殊的数据类型,不要建立索引。

       铁律六:索引可以跟Where语句的集合融为一体。

    建立索引常用规则:


    1、表的主键、外键必须有索引;

    2、数据量超过300的表应该有索引;

    3、经常与其他表进行连接的表,在连接字段上应该建立索引;

    4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

    5、索引应该建在选择性高的字段上;

    6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

    7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:

       A、正确选择复合索引中的主列字段,一般是选择性较好的字段;

       B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?
          如果是,则可以建立复合索引;否则考虑单字段索引;

       C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;

       D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;

       E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

       F、复合索引中只要有一列含有NULL值,那么这一列对于此复合索引是无效的


         G.索引,不仅仅是主键和唯一键,也可以是其他的任何列。在使用like其中一个有索引的字段列的时候。

               如: select *from A name like ‘xxx%’;

       这个sql会使用name的索引(前提name建立了索引);而下面的语句就使用不了索引

       Select * from A name like ‘%xxx’;

       因为‘%’代表任何字符,%xxx不知道怎么去索引的,所以使用不了索引。

         H.  如果我们创建了(area,age,salary)的复合索引,那么其实相当于创建了(area,age,salary),(area,age),(area)三个索引,这样称为最佳左前             缀特性。因此我们在创建复合索引的应该将最常用作限制条件的列放在最左边,依次递减。
    8、频繁进行数据操作的表,不要建立太多的索引;

    9、删除无用的索引,避免对执行计划造成负面影响
    ————————————————
    版权声明:本文为CSDN博主「duolacmeng28」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u011358288/article/details/41893717

    展开全文
  • MySql 创建索引原则

    千次阅读 2015-12-27 15:41:12
    为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。本小节将向读者介绍一些索引的设计原则。   1.选择唯一性索引   唯一性索引的值是唯一的,可以更快速的通过该索...
    为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。本小节将向读者介绍一些索引的设计原则。
     
    1.选择唯一性索引
     
    唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。
     
    2.为经常需要排序、分组和联合操作的字段建立索引
     
    经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为其建立索引,可以有效地避免排序操作。
     
    3.为常作为查询条件的字段建立索引
     
    如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度。因此,为这样的字段建立索引,可以提高整个表的查询速度。
     
    4.限制索引的数目
     
    索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。修改表时,对索引的重构和更新很麻烦。越多的索引,会使更新表变得很浪费时间。
     
    5.尽量使用数据量少的索引
     
    如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。
     
    6.尽量使用前缀来索引
     
    如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。
     
    7.删除不再使用或者很少使用的索引
     
    表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。 数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响。
     

    注意:选择索引的最终目的是为了使查询的速度变快。上面给出的原则是最基本的准则,但不能拘泥于上面的准则。读者要在以后的学习和工作中进行不断的实践。根据应用的实际情况进行分析和判断,选择最合适的索引方式。


    PS: MySQL创建索引

    http://blog.csdn.net/csdnones/article/details/50265295

    PS:MySQL 索引类型

    http://blog.csdn.net/csdnones/article/details/50412672



    展开全文
  • 数据库建立索引常用的原则

    万次阅读 2018-09-18 10:59:20
    1、表的主键、外键必须有索引;2、数据量超过300的表应该有索引;3、经常与其他表进行连接的表,在连接字段上应该建立索引;4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;5、索引应该建在选择性高...
  • 索引的几大原则

    万次阅读 2019-05-09 11:41:25
    1.最左前缀匹配原则 非常重要的原则,mysql会一直向右匹配直到... 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。 2.=和in可以乱...
  • mysql建立索引的几大原则

    千次阅读 2019-08-23 11:02:07
    1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名...
  • Mysql创建索引注意事项

    千次阅读 2020-03-08 08:40:39
    介绍了mysql索引相关的基础知识及索引自身搜索的规则和锁机制,并列了一些创建索引的一些优化策略或小tips...
  • 数据库适合创建索引的规则如下: 表的主键,外键应该创建索引; 数据量比较大的表应该创建索引; 经常需要和其他表建立连接,在连接字段应该创建索引; 经常出现在where子句中的字段,应该创建索引。 数据库不适合...
  • 索引的作用和为什么要创建索引

    千次阅读 2015-10-20 15:58:23
    为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能。  第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。  第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。...
  • Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    面向对象五大基本原则是什么(可选) 类与接口 抽象类和接口的对比 普通类和抽象类有哪些区别? 抽象类能使用 final 修饰吗? 创建一个对象用什么关键字?对象实例与对象引用有何不同? 变量与方法 成员变量与局部...
  • SQL索引建立原则和使用

    万次阅读 2019-08-02 13:31:54
    之前在网上看到过很多关于mysql联合索引最左前缀匹配的文章,自以为就了解了其原理,发现遗漏了些东西,这里自己整理一下这方面的内容。 1 前言 SQL索引有两种,聚集索引和非聚集索引 聚集索引存储记录是物理上...
  • SQL server创建索引

    千次阅读 2016-07-06 17:27:00
    使用T-SQL语句创建索引的语法: CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]   INDEX index_name  ON table_name (column_name…)  [WITH FILLFACTOR=x]  UNIQUE表示唯一索引,可选  CLUSTERED、...
  • 在已经存在的表上创建索引的时候要先查看要创建索引的字段上是否已经有索引了。 若没有索引则可以添加索引 create index age_index on d ( age ) ; 添加其他的索引方法是类似的,就不一一列举 使用...
  • SQL 创建索引,语法

    千次阅读 2014-06-07 16:10:16
    主键是唯一的,所以创建了一个主键的同时,也就这个字段创建了一个唯一的索引。SQL SERVER将主键默认定义为聚集索引,事实上,索引是否唯一与是否聚集是不相关的,聚集索引可以是唯一索引,也可以是非唯一索引; ...
  • mysql 索引创建和使用的经验原则

    千次阅读 2018-07-15 16:01:43
    mysql:索引创建和使用的经验原则 本人并不是一个专业的dba,对于索引这么宏大的话题只能做一个泛泛而谈.由于不同引擎索引机制的差别,mysql版本的变化都会对索引产生巨大的影响.因此本文只是本人个人在平时的学习...
  • 创建索引的条件和注意事项

    千次阅读 2016-09-21 12:16:14
    索引的理解和创建索引应该注意的条件
  • Oracle 创建索引基本规则总结

    千次阅读 2013-12-04 23:11:53
    1. 选择索引字段的原则: 在WHERE子句中最频繁使用的字段 联接语句中的联接字段选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很好)Oracle在UNIQUE和主键字段上自动建立索引在选择性很差的...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    == 解读 对于基本类型和引用类型 == 的作用效果是不同的,如下所示: 基本类型:比较的是值是否相同; 引用类型:比较的是引用是否相同; 代码示例: String x = "string"; String y = "string"; String z = new ...
  • 深入理解MySQL索引设计和优化原则

    千次阅读 多人点赞 2020-08-08 17:05:15
    探讨索引设计和优化原则之前,先给大家熟悉一下索引类型: 主键索引PRIMARY KEY:它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引。 唯一索引UNIQUE:唯一索引列的值必须唯一,但允许有...
  • mysql建索引的几个原则

    千次阅读 2020-10-20 11:09:10
    1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在...
  • Oracle创建索引基本规则

    千次阅读 2015-08-15 22:47:53
    Oracle创建索引基本规则   一、B-Tree索引 1. 选择索引字段的原则: 在WHERE子句中最频繁使用的字段  联接语句中的联接字段  选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性
  • MySql 表索引设计原则

    2019-12-02 20:27:58
    1.加快数据的检索速度,这是创建索引的最主要的原因; 2.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性; 3.加速表和表之间的连接; 4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序...
  • Hibernate使用索引索引添加原则

    万次阅读 2017-08-31 11:40:07
    1、使用Hibernate添加索引的方式  1)表上加索引 @Table(name = "T_S_USER",indexes={@Index(name="trial_idIndex",columnList="trial_id"),@Index(name="material_idIndex",columnList="material_id")})
  • Oracle数据库索引创建

    千次阅读 2018-09-12 19:00:18
    如果表数据和索引数据不需要分开  建表时直接指定主键索引  CREATE TABLE VOAMASTM (   "REFCODE" NUMBER(10) DEFAULT 0 NOT NULL ,   "OWNERREFCODE" NUMBER(10) DEFAULT 0 ,   "...
  • 创建索引时的注意事项

    千次阅读 2018-03-09 18:28:10
    即使通过索引缩小了数据检索的范围,但由于数据本身是无序的,当从表中提取实际数据时,会产生频繁的定位问题,这也使得SQL Server基本上不会使用无聚集索引表中的索引来检索数据。2、保证聚集索引唯一由于聚集索引...
  • 小甲鱼零基础入门学习python笔记

    万次阅读 多人点赞 2019-08-14 11:06:30
    025 字典:当索引不好用时 026 字典:当索引不好用时2 027 集合:在我的世界里,你就是唯一 028 文件:因为懂你,所以永恒 029 文件:一个任务 030 文件系统:介绍一个高大上的东西 031 永久存储:腌制一缸美味的...
  • MySQL 索引最左匹配原则

    万次阅读 2016-10-24 22:11:58
    索引主要做3件事:过滤(filter),排序或分组(sort/group),覆盖(cover)。...一个基本查询的工作流如下: 1. 使用索引以查找匹配的记录,并得到数据的指针。 2. 使用相关数据的指针。 3. 返回查询到的记录。
  • 当我们面对大量的数据查询时,为了提高查询效率,我们在数据库中总要使用到索引。那么索引究竟是怎么样的东西呢? 索引本质 索引其实就是一种数据结构,他将数据库中的数据以一定的数据结构算法进行存储,能够帮助...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 80,421
精华内容 32,168
关键字:

创建索引的基本原则