zoukankan      html  css  js  c++  java
  • 数据库--索引

    索引

    (1)索引的概念:索引是数据库帮助数据库获取数据的数据结构,好比书的目录,加快数据库的查询速度。

    (2)索引的分类:

    ①主键索引PRIMARY KEY:它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引。注意:一个表只能有一个主键

    ②唯一索引UNIQUE:唯一索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。可以通过ALTER TABLE table_name ADD UNIQUE (column)

    ③普通索引 INDEX:这是最基本的索引,它没有任何限制

    ④组合索引,指多个字段创建的索引,只有在查询条件中使用了创建索引的第一个字段,索引才会被使用

     ⑤上述几种可能在不同数据里叫法不一样,但是原理基本都是一样的

    (3)索引的作用:加快数据的查找速度,提高数据库的性能

    (4)索引常识:

    ①索引是越多越好吗?每张表都必须加索引吗?

     答:索引会占储存空间,使用错误的索引使用不当不仅不会提高系统性能还会造成资源浪费。不是每张表都需要加索引的,比如我们有一些表就几十条甚至几条数据直接查询的速度非常快,使用索引完全没有必要。所以不是索引越多越好也不是每张表都需要加索引

    ②怎么增加索引?

     答:增加索引有2种办法,第一种在数据库的可视化界面找到对应需要加索引的表,点击展开,可以看到索引的项--右键新增索引--在弹出的界面输入索引的名称、选择是否唯一、选择是否聚合或是非聚合(聚合也叫组合)--添加需要添加索引的字段

    第二种用语句增加索引:

    CREATE INDEX 索引名 ON 表名(列名1,列名2,…),列如:CREATE INDEX name_index ON index_table(name),此为在index_table表上的name列上创建一个索引name_index

    也可以通过修改表来进行创建索引,语法为:ALTER TABLE tablename ADD INDEX [索引的名字] (列i列表)

    ③我们建好索引以后需要我们操作吗?

     答:不需要,我们在表上把索引加上,至于怎么提高查询的效率,这就不是我们关心的了,数据库系统会在我们查询时自动使用索引的,具体怎么操作的网上有很多的文章可以看看,因表数据大而查询慢时我们就可以加上索引,然后什么二分法查数据啥的就交给数据库了,你只要正确的建了表索引,数据库查询时就会自动使用

     ④什么叫做重建索引

    答:在我理解来看,其实我们创建的索引就是一物理键,我们创建在表上的索引,最终会同时存在在另一张表(索引表)上,而索引表和数据的物理地址相关联,这大概就是索引的本质,所谓的索引重建并不是重建我们添加到表上的索引,而是重新分配计算我们的索引表,将多余的索引碎片清理、整理,从而提高索引的执行效率(个人理解,不代表啥)

    ⑤索引会不会失效

    答:索引在某些情况是会失效的,对于创建的组合索引,不是使用的第一部分就不会使用索引,比如我们给A、B2列加上了索引(注意顺序先A后B),select * from  XX where B=YY,这样索引是不会生效的,但是如果为select * from XX  where A=YY 这样索引就会生效,一般来说where中存在A数据库就会启用索引,哪怕是where B=YY AND A=ZZ,这样也会生效,因为数据会将这个写法改为where A=ZZ AND B=YY。其次就是对于like查询,以aaa%查询索引生效的,但是%aaa索引不生效的,最后是在where条件中使用or连接关键字、is null 、is not null以及in、not in等等都会让索引失效(因为会进行全表扫描,索引不起作用)

    墨者看遍天下皆是丹青,测试看尽万物皆是bug
  • 相关阅读:
    20145236 《信息安全系统设计基础》第11周学习总结
    20145308 《信息安全系统设计基础》课程总结
    20145308 《信息安全系统设计基础》第14周学习总结
    20145308 《信息安全系统设计基础》第13周学习总结
    20145308刘昊阳 20145302张薇《信息安全系统设计基础》实验五:网络通信 实验报告
    20145308 《信息安全系统设计基础》第12周学习总结
    GDB调试汇编堆栈
    20145302张薇 20145308刘昊阳 《信息安全系统设计基础》实验四:外设驱动设备设计 实验报告
    20145308 《信息安全系统设计基础》第11周学习总结
    20145302张薇 20145308刘昊阳 《信息安全系统设计基础》实验三 实时系统的移植 实验报告
  • 原文地址:https://www.cnblogs.com/striver-dl/p/13920386.html
Copyright © 2011-2022 走看看