乐趣区

一分钟实践数据库索引

前言

后面咱们以及学习了如何利用 sql 语句进行循环增加数据,在增加了大量的数据之后咱们就能够学习与实际索引了!! 高兴 +1 常识+2 好上面咱们开始

创立数据循环

测试表代码

create table test(location_id int ,location_name varchar(20));

再编写存储过程,其中波及到循环的应用 。咱们欲通过这个存储过程,来达到往表中插入数据的成果, 这里插入 一百万条 Sql

drop procedure if exists insert_while;
delimiter //
create procedure insert_while()
begin
    declare i int default 1;
    while i<1000000
    do
        insert into test values(i,concat('bookworm',i));
        set i=i+1;
    end while;
    commit;
end //
delimiter ;

运行以及破费工夫:

mysql> call test_loop();

call insert_while()
OK
工夫: 542.984s

5 种索引以及创立办法

增加主键索引: alter table table_name add primary key (column )

增加惟一索引: alter table table_name add unique (column )

一般索引: alter table table_nameadd index index_name(column )

全文索引: alter table table_name add fulltext(column )

增加多列索引: alter table table_name add index index_name(column1, column2, column3 )

删除数据库索引:drop index indexname on TableName

试验

先查问一次吧
SELECT * from test where location_name="bookworm1"

后果耗时

SELECT * from test where location_name="bookworm1"
OK
工夫: 0.371s

增加一般索引

alter table test ADD index name_index(`location_name`)
再来查问一次吧
SELECT * from test where location_name="bookworm1"

后果耗时

SELECT * from test where location_name="bookworm1"
OK
工夫: 0.001s

如果这个时候再查问没有建设索引的列

SELECT * from test where location_id=1

后果:

SELECT * from test where location_id=1
OK
工夫: 0.356s

所以建设了索引再进行查问真的非常快捷 从虫虫的小测试就能够看出足足快了上百倍不止, 须要留神的是针对不同的查问列咱们须要建设 不同的索引

各索引的最佳环境剖析

一般索引: 惟一工作是放慢对数据的访问速度。因而,应该只为那些最经常出现在查问条件,只有有可能,就应该抉择一个数据最参差、最紧凑的数据列(如一个整数类型的数据列)来创立索引。

惟一索引 : 如果能确定某个数据列将只蕴含彼此各不相同的值,就能够用惟一索引了,有两点益处,一是 简化 了 MySQL 对这个索引的 管理工作 ; 二是 MySQL 会在有新记录插入数据表时,主动查看新记录的这个字段的值是否曾经在某个记录的这个字段里呈现过了,如果是,MySQL 将回绝插入那条新记录。也就是说,惟一索引能够 保证数据记录的唯一性

主键索引 : 必须为 主键字段 创立一个索引,这个索引就是所谓的 ” 主索引 ”

复合索引:

设想一下,您有以下三个查问:查问 I:SELECT * FROM homes WHERE `geolat`=42.9 AND `geolng`=36.4
查问 II:SELECT * FROM homes WHERE `geolat`=42.9
问题 III:SELECT * FROM homes WHERE `geolng`=36.4

如果每列有独自的索引,则所有三个查问都应用索引。在 MySQL 中,如果您有复合索引(geolat,geolng),则只有查问 I 和查问 II(应用 composit 索引的第一局部)应用索引。在这种状况下,查问 III 须要全表搜寻。

全文索引 : 文本字段上的一般索引只能放慢对呈现在字段内容最后面的字符串(也就是字段内容结尾的字符) 进行检索操作。如果字段里寄存的是由几个、甚至是多个单词形成的较大段文字,一般索引就没什么作用了。这种检索往往以 LIKE %word% 的模式呈现,这对 MySQL 来说很简单,如果须要解决的数据量很大,响应工夫就会很长。

要是能为您提供帮忙,请给予反对 (关注、 点赞、分享),虫虫蟹蟹大家了!

退出移动版