索引是一种特殊的文件(innoDB数据表上的索引是表空间的一个组成部分)
数据量大经常查询需要建立索引
索引可以加快数据库运行速度
创建测试表
use TCL
create table text_index(title varchar(10));
插入十万条数据
from pymysql import connect
def main():
#创建Connection连接
conn = connect(host = 'localhost',port = 3306,user = 'root' ,password = 'hezhuang',database = 'TCL',charset = 'utf8')
# 获得Cursor对象
cursor = conn.cursor()
#插入十万条数据
for i in range(100000):
corsor.execute("insert into text_index values('ha-%d')"%i)
#提交数据
conn.commit()
if __name__ == '__main__':
main()
查询索引
开启运行时间监测 set profiling = 1;
查看第一万条数据ha-9999 select * from test_index where title = 'ha-9999';
查看执行时间 show profiles;
为表title_index 的title 列创建索引 create index title_index on test_index (title(10));
执行查询语句 select * from test_index where title = 'ha-9999';
再次查看执行时间 show profiles;
创建索引的情况
1、主键自动建立唯一索引
2、操作的文件使用频繁可以作为查询条件的字段应该创建索引
3、查询中与其他表关联的字段,外键关系建立索引
4、频繁更新的字段不适合建立索引,因为每次更新不单单是更新了记录还会更新索引
5、WHERE条件里用不到的字段不创建索引
6、查询中排序的字段,排序的字段若通过索引去访问将大大提高排序速度
7、查询中统计或者分组字段
不需要创建索引的情况
1、表记录太少
2、经常增删改的表
3、如果某个数据列包含许多重复内容,为它建立索引就没有太大的实际效果