码迷,mamicode.com
首页 > 数据库 > 详细

mysql 索引使用教程

时间:2018-08-09 21:08:07      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:utf8   class   除了   磁盘空间   from   顺序   file   一段   文件   

1.什么索引

  索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的位置信息。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度.

2.索引工作原理

  除了词典,生活中随处可见索引的例子,如火车站的车次表、图书的目录等。它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是我们总是通过同一种查找方式来锁定数据。

  数据库也是一样,但显然要复杂许多,因为不仅面临着等值查询,还有范围查询(>、<、between、in)、模糊查询(like)、并集查询(or)等等。数据库应该选择怎么样的方式来应对所有的问题呢?我们回想字典的例子,能不能把数据分成段,然后分段查询呢?最简单的如果1000条数据,1到100分成第一段,101到200分成第二段,201到300分成第三段……这样查第250条数据,只要找第三段就可以了,一下子去除了90%的无效数据。

 

3.查看一个表中是否已经创建索引

show index from 表名;

4.创建索引(如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致,字段类型如果不是字符串,可以不填写长度部分)

create index 索引名 on 数据表(字段名称长度)

5.删除索引

drop index 索引名称 on 数据表

6.测试数据表是否能加快查询速度

6.1创建一个数据表

create table my_index(title varchar(10));

6.2 插入数据

from pymysql import connect

def main():
    # 创建Connection连接
    conn = connect(host=‘localhost‘,port=3306,database=‘python_test_1‘,user=‘root‘,password=‘xu666666‘,charset=‘utf8‘)
    # 获得Cursor对象
    cursor = conn.cursor()
    # 插入10万次数据
    for i in range(100000):
        cursor.execute("insert into my_index values(‘ha-%d‘)" % i)
    # 提交数据
    conn.commit()

if __name__ == "__main__":
    main()

6.3 开始查询并启动时间检测

  • 开启运行时间监测:
set profiling=1;
  • 查找第1万条数据ha-99999
select * from my_index where title=‘ha-99999‘;
  • 查看执行的时间:
show profiles;
  • 为表title_index的title列创建索引:
create index test_index on my_index(title(10));
  • 执行查询语句:
select * from my_index where title=‘ha-99999‘;
  • 再次查看执行的时间
show profiles;

6.4 测试结果

       技术分享图片

 

注意

  1.索引可以明显提高某些字段的查询效率,但不能加快插入,更新,删除数据的效率,相反由于每次数据表数据的更改都会让索引重新排列,会降低效率

  2.要注意的是,建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的where字句单独建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。建立索引会占用磁盘空间。

    3. 建立索引要创建在常用的查询字段上,并且根据自己的需求建立说因数量

 

技术分享图片

mysql 索引使用教程

标签:utf8   class   除了   磁盘空间   from   顺序   file   一段   文件   

原文地址:https://www.cnblogs.com/xuchuankun/p/9451495.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!