mysql 索引
索引是一种特殊文件(InnoDB数据表上的索引是表空间的一部分组成),它们包含这对数据表里所有记录的引用指针
通俗的讲,数据库的引用好比是一本书的目录,能加快数据库的查询速度
索引demo:
-- 创建一个测试表test_index create table test_index(title varchar(10)); -- 向表中写入10万条数据 from pymysql import connect conn = connect(host="localhost",port=3306,user="root",password="",database="jing_dong",charset="utf8") cs1 = conn.cursor() for i in range(100000): cs1.execute("insert into test_index values('ha-%d')" % i) conn.commit() -- 开启运行时间检测 set profiling=1; -- 查找第10万条数据 select * from test_index where title="ha-99999"; -- 查看执行时间,这里大概是0.4秒 show profiles; -- 为表title_index表的title列创建索引,varchar类型的列后面加上一个长度,这里是10,整数列可以不用 create index index_test on test_index(title(10)); -- 创建索引语句:create index,索引名字是index_test,on后面是关联的test_index表中的title列,列长度是10 -- 再次查找第十万条数据: select * from test_index where title="ha-99999"; -- 查看运行时间,这里大概是0.0006秒 show profiles -- 查看索引 show index from 表名 -- 创建索引 字段名后面的长度,如果是字符串(char,varchar)就指定长度,非字符串则不用 create index 索引名 on 表名(字段名(长度)) -- 删除索引 drop index 索引名 on 表名 -- 主键、外键 mysql默认建立索引 -- 主意: -- 建立太多索引会影响更新和插入的速度,因为它需要同时更新每个索引文件,对于一个经常需要 -- 更新和插入的表格,就没有必要为一个很少使用的where字句单独建立索引了,对于 -- 比较小的表,排序开销不大,也没有必要建立另外的索引。 -- 索引会占用磁盘空间

浙公网安备 33010602011771号