MySQL優(yōu)化:千萬(wàn)級(jí)數(shù)據(jù)量根據(jù)索引優(yōu)化查詢速度
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā),目前屬于 Oracle 旗下公司。MySQL ***的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在 WEB 應(yīng)用方面MySQL是***的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件之一。
很多網(wǎng)站的重要信息都是保存在數(shù)據(jù)庫(kù)中的,用戶通過(guò)提交訪問(wèn)數(shù)據(jù)庫(kù)來(lái)獲取用戶信息。如果數(shù)據(jù)庫(kù)速度很慢,將會(huì)對(duì)大大影響用戶的體驗(yàn),流失眾多的核心用戶。
今天此篇文章教你使用索引優(yōu)化查詢速度,哪怕***數(shù)據(jù)量,查詢速度也很快,幫你節(jié)省服務(wù)器的資源!
1、索 引的作用
索引通俗來(lái)講就相當(dāng)于書(shū)的目錄,當(dāng)我們根據(jù)條件查詢的時(shí)候,沒(méi)有索引,便需要全表掃描,數(shù)據(jù)量少還可以,一旦數(shù)據(jù)量超過(guò)百萬(wàn)甚至千萬(wàn),一條查詢sql執(zhí)行往往需要幾十秒甚至更多,5秒以上就已經(jīng)讓人難以忍受了。
提升查詢速度的方向:一是提升硬件(內(nèi)存、cpu、硬盤),二是在軟件上優(yōu)化(加索引、優(yōu)化sql;優(yōu)化sql不在本文闡述范圍之內(nèi))。能在軟件上解決的,就不在硬件上解決,畢竟硬件提升代碼昂貴,性價(jià)比太低。代價(jià)小且行之有效的解決方法就是合理的加索引。索引使用得當(dāng),能使查詢速度提升上萬(wàn)倍,效果驚人!
2、索 引類型
MySQL的索引有5種:
主鍵索引、普通索引、唯一索引、全文索引、組合索引(多列索引)
- 普通索引(index): 僅僅只是為了提高查詢的速度。
- 唯一索引(unique index): 防止數(shù)據(jù)出現(xiàn)重復(fù)
- 主鍵索引(primary key):引保證數(shù)據(jù)的唯一性,而且不能為NULL
- 全文索引(fulltext key):從字段中提取的特別關(guān)鍵詞
- 組合索引(多列索引):創(chuàng)建在多列上的索引
3、索引的語(yǔ)法
- 查看某張表的索引:show index from 表名;
- 創(chuàng)建普通索引:alter table 表名 add index 索引名 (加索引的列)
- 創(chuàng)建組合索引:alter table 表名 add index 索引名 (加索引的列1,加索引的列2)
- 刪除某張表的索引:drop index 索引名 on 表名;
4、性能測(cè)試
1)創(chuàng)建數(shù)據(jù)表
2)使用存儲(chǔ)過(guò)程插入一千萬(wàn)條數(shù)據(jù)
3)執(zhí)行存儲(chǔ)過(guò)程
4)測(cè)試結(jié)果,沒(méi)有加索引
5)給username添加索引
6)測(cè)試結(jié)果,添加索引