索引

一般的应用对数据库大部分操作都是查询,所以查询速度显得尤为重要。

当数据库中数据量很大时,查找数据会变得很慢,这个时候就需要做相应的优化处理。

建立索引一个有效的优化方案:

索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目录是要占纸张的,而索引是要占磁盘空间的。

选择索引的数据类型:

越小的数据类型越好,越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。 简单的数据类型更好,整型数据比起字符串,处理开销更小,因为字符串的比较更复杂。

Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引

创建索引

PRIMARY KEY(主键索引):

alter table 表名 add primary key (列名);

UNIQUE(唯一索引):

alter table 表名 add unique (列名);

INDEX(普通索引):

alter table 表名 add index 索引名称 (列名);

FULLTEXT(全文索引):

alter table add fulltext (列名);

组合索引:

alter table 表名 add index 索引名 (列1,列2,列2);

查看索引

show index from 表名;

删除索引

drop index 索引名 on 表名;

查询测试

创建一个表myindex表,向里面插入50万条数据

create table myindex(
id int auto_increment primary key  not null,
test varchar(10)
)

写一段python脚本插入将50万条数据插入

# coding=utf-8
from pymysql import *
conn = connect(host='127.0.0.1',port=3306,database='python',user='root',password='mysql',charset='utf8')
cs1=conn.cursor()
for i in range(0,500000):
    str_ = 'test' +str(i)
    sql = "insert into myindex values(0,%s);"
    cs1.execute(sql,[str_])
conn.commit()
cs1.close()
conn.close()

创建好表之后开始查询不建索引与建立索引需要的时间,

开始时间检测

set profiling=1;

没有给test字段创建索引的时候,查找第400000条数据

select * from myindex where test='test400000';

查看执行时间

show profiles;

建立索引

alter table myindex add index index_name test;

查找第400000条数据

select * from myindex where test='test400000';

查看执行时间

show profiles;
数据库基础 all right reserved,powered by Gitbook文件修订时间: 2018-04-18 11:07:21