139 MySQL索引

1、索引的概念

  • 索引就是鍵 -keypython

    1)鍵 是添加給數據庫表的 字段 的
    2)給表建立 鍵 後,該表不只會形參 表結構、表數據,還有 鍵的B+結構圖
    3)鍵的結構圖是須要維護的,在數據完成增、刪、改操做時,只要影響到有鍵的字段,結構圖都要維護一次
        因此建立鍵後必定會下降 增、刪、改 的效率
    4)鍵能夠極大的加快查詢速度(開發需求中,幾乎業務都和查有關係)
    5)創建鍵的方式:主鍵、外鍵、惟一鍵、index

2、實例

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字段的數據查詢的速度比較快。這就是鍵(索引)能夠極大的加快查詢速度mysql

相關文章
相關標籤/搜索