ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

139 MySQL索引

2019-10-04 15:03:00  阅读:278  来源: 互联网

标签:a1 execute MySQL cursor 索引 a2 time 4975 139


一、索引的概念

  • 索引就是键 -key

    1)键 是添加给数据库表的 字段 的
    2)给表创建 键 后,该表不仅会形参 表结构、表数据,还有 键的B+结构图
    3)键的结构图是需要维护的,在数据完成增、删、改操作时,只要影响到有键的字段,结构图都要维护一次
        所以创建键后一定会降低 增、删、改 的效率
    4)键可以极大的加快查询速度(开发需求中,几乎业务都和查有关系)
    5)建立键的方式:主键、外键、唯一键、index

二、实例

import pymysql
from pymysql.cursors import DictCursor

1.创建数据库连接对象
conn = pymysql.connect(user='root', passwd='root', db='oldboy')
cursor = conn.cursor(DictCursor)

2.先创建两张表无索引的a1
sql1 = """create table a1(
    id int primary key auto_increment,
    x int,
    y int
)"""
cursor.execute(sql1)
# 建立有索引的a2
sql2 = """create table a2(
    id int primary key auto_increment,
    x int,
    y int,
    index(x)
)"""
cursor.execute(sql2)


3.每个表插入5000条数据
import random
for i in range(1, 5001):
    x = i
    y = random.randint(1, 5000)
    cursor.execute('insert into a1(x, y) values(%s, %s)', (x, y))
    cursor.execute('insert into a2(x, y) values(%s, %s)', (x, y))

conn.commit()

4.查询a1的id为4975的记录所用的时间
import time
b_time = time.time()
sql = 'select * from a1 where id=4975'
cursor.execute(sql)
e_time = time.time()
print(e_time - b_time)
# 结果:0.0010142326354980469

5.查询a1的x为4975的记录所用的时间
b_time = time.time()
sql = 'select * from a1 where x=4975'
cursor.execute(sql)
e_time = time.time()
print(e_time - b_time)
#结果:0.0019969940185546875

6.查询a2的id为4975的记录所用的时间
b_time = time.time()
sql = 'select * from a2 where x=4975'
cursor.execute(sql)
e_time = time.time()
print(e_time - b_time)
#结果:0.0009992122650146484

重点:从以上的a1和a2表的数据查询速度来看,很明显a2表中有索引的x字段的数据查询的速度比较快。这就是键(索引)可以极大的加快查询速度

标签:a1,execute,MySQL,cursor,索引,a2,time,4975,139
来源: https://www.cnblogs.com/xichenHome/p/11622145.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有