codecamp

索引操作

一、什么事索引

    索引就是一张保存了主键和索引字段的数据表。

    未命名文件

    该图是数据库针对myisam和innodb两种存储引擎在数据存储上面的结构图,从myisam中可以看出,是把我们的索引单独存储到一个文件中,在查询的时候直接查询索引即可。

二、为什么使用索引

    优点:快速、高效检索。如全文检索。

    弊端:过多的索引也会减低更新表的速度,如我们在操作insert、update、delete时,我们不仅要向实体表中操作,还需要向索引表进行操作。还会过多的暂用磁盘的存储空间。

三、索引分类

    单列索引:在创建索引时,索引中只有一个字段。一张表中可以有多个单列索引(主键索引,唯一索引,普通索引,全文索引)。

    多列索引:在创建索引时,索引中有多个字段。

四、语法格式

    1.在表外直接创建索引

CREATE INDEX indexName ON mytable(column(length)); 

    2.创建表时在表的结构中添加索引

CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (column(length))  
 
); 

    3.删除索引

DROP INDEX [indexName] ON mytable; 

五、什么时候使用索引

  1. 使用like时,后面为常量,要是%不在第一个字符中此时索引才会生效。例如,like '%5';此时 是不生效的。
  2. 进行大文本搜索时,使用全文检索而不是用'%?%'。
  3. 列名为索引时,使用colum-name is null ,而column-name is not null 是没有使用到索引

六、什么时候有索引但是没用索引

  1. 使用索引比全盘扫描更慢。
  2. 使用memory/heap当做存储引擎时,where条件没有使用"="。
  3. 用or 或者 and 隔开条件时,条件两边设置索引情况不一致。
  4. 查询时,where条件给的数据类型与字段的类型不一致。

七、 检索索引使用状况

    show status like "hanlder_read%";

    查询出来的hanlder_read_rnd_next的值越高,则效率越低。



视图操作
查询优化
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

sqlserver

oracle

db2

mangodb

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }