佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > MySQL 各個(gè)索引的使用詳解

MySQL 各個(gè)索引的使用詳解

熱門(mén)標(biāo)簽:地方門(mén)戶(hù)網(wǎng)站 鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 服務(wù)外包 百度競(jìng)價(jià)排名 呼叫中心市場(chǎng)需求 Linux服務(wù)器 AI電銷(xiāo)

一. 慢查詢(xún)?nèi)罩?

1.1 MySQL的日志類(lèi)型

日志用于記錄數(shù)據(jù)庫(kù)的運(yùn)行情況,以及用戶(hù)對(duì)數(shù)據(jù)庫(kù)執(zhí)行的各類(lèi)操作。當(dāng)數(shù)據(jù)庫(kù)發(fā)生故障時(shí),可以根據(jù)日志分析解決問(wèn)題,從而對(duì)數(shù)據(jù)庫(kù)進(jìn)行恢復(fù)。

1.2 認(rèn)識(shí)慢查詢(xún)?nèi)罩?/strong>

慢查詢(xún)?nèi)罩居糜谟涗汳ySQL數(shù)據(jù)庫(kù)中響應(yīng)時(shí)間超過(guò)指定閾值的語(yǔ)句。慢查詢(xún)?nèi)罩就ǔR脖环Q(chēng)之為慢日志,因?yàn)樗粌H僅只針對(duì)SELECT語(yǔ)句,像INSERT、UPDATE、DELETE等語(yǔ)句,只要響應(yīng)時(shí)間超過(guò)所設(shè)定閾值都會(huì)記錄在慢查詢(xún)?nèi)罩局小?/p>

1.3 如何開(kāi)啟慢查詢(xún)?nèi)罩久?/strong>

慢查詢(xún)?nèi)罩究梢酝ㄟ^(guò)命令臨時(shí)設(shè)置,也可以修改配置文件永久設(shè)置。

查看是否開(kāi)啟慢查詢(xún)?nèi)罩?/strong>

show variables like 'slow%';

臨時(shí)開(kāi)啟慢查詢(xún)?nèi)罩?/strong>

set slow_query_log='ON';
set long_query_time=1;

慢查詢(xún)?nèi)罩疚募谖恢?/strong>

show variables like '%datadir%';

二. 查詢(xún)分析器——EXPLAIN

 2.1 explain簡(jiǎn)介

explain命令可以查看SQL語(yǔ)句的執(zhí)行計(jì)劃。當(dāng)explain與SQL語(yǔ)句一起使用時(shí),MySQL將顯示來(lái)自?xún)?yōu)化器的有關(guān)語(yǔ)句執(zhí)行計(jì)劃的信息。也就是說(shuō),MySQL解釋了它將如何處理語(yǔ)句,包括有關(guān)如何聯(lián)接表以及以何種順序聯(lián)接表的信息。

explain能做什么?

  • 分析出表的讀取順序
  • 數(shù)據(jù)讀取操作的操作類(lèi)型
  • 哪些索引可以使用
  • 哪些索引被實(shí)際使用
  • 表之間的引用
  • 每張表有多少行被優(yōu)化器查詢(xún)

 2.2 explain的使用

explain的使用很簡(jiǎn)單,只需要在SQL語(yǔ)句之前加上explain命令即可,除select語(yǔ)句外,explain也能分析insert、update和delete語(yǔ)句。

命令解釋?zhuān)?br />

三. 索引的基本使用

3.1 什么是索引

索引是一種特殊的數(shù)據(jù)結(jié)構(gòu),類(lèi)似于圖書(shū)的目錄,它能夠極大地提升數(shù)據(jù)庫(kù)的查詢(xún)效率。如果沒(méi)有索引,在查詢(xún)數(shù)據(jù)時(shí)必須掃描表中的所有記錄才能找出符合條件的記錄,這種全表掃描的查詢(xún)效率非常低。

總結(jié):提高查詢(xún)效率,就好像垃圾分類(lèi)一樣,把一樣效果的東西放在一起,找的時(shí)候好找。

3.2 常見(jiàn)的索引種類(lèi)

索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可快速訪問(wèn)數(shù)據(jù)庫(kù)表中的特定記錄。

數(shù)據(jù)庫(kù)的索引好比一本書(shū)的目錄,能夠加快數(shù)據(jù)庫(kù)的查詢(xún)速度;索引是快速搜索的關(guān)鍵,如果不加索引,查找任何一條特定的數(shù)據(jù)都會(huì)進(jìn)行一次全表掃描。

3.3 索引的使用

創(chuàng)建索引

創(chuàng)建普通索引

CREATE INDEX indexName ON tableName(columnName(length));

創(chuàng)建唯一索引

CREATE UNIQUE INDEX indexName ON tableName(columnName(length));

創(chuàng)建復(fù)合索引

CREATE INDEX indexName ON tableName(columnName1, columnName2, …);

刪除索引

DROP INDEX [indexName] ON tableName;

查看索引

SHOW INDEX FROM tableName;

3.4 索引的實(shí)戰(zhàn)經(jīng)驗(yàn)

四. 復(fù)合索引前導(dǎo)列特性

復(fù)合索引前導(dǎo)列特性:在MySQL中,如果創(chuàng)建了復(fù)合索引(name, salary, dept),就相當(dāng)于創(chuàng)建了 (name, salary, dept)、(name, salary)和(name) 三個(gè)索引,因此在創(chuàng)建復(fù)合索引時(shí)應(yīng)該將最常用作查詢(xún)條件的列放在最左邊,依次遞減

列:

未使用索引

select * from employee where salary=8800;
select * from employee where dept='部門(mén)A';
select * from employee where salary=8800 and dept='部門(mén)A';

使用索引:前面都帶有name

select * from employee where name='liufeng';
select * from employee where name='liufeng' and salary=8800;
select * from employee where name='liufeng' and salary=8800 and dept='部門(mén)A';

五. 覆蓋索引

5.1 什么是覆蓋索引

覆蓋索引又稱(chēng)之為索引覆蓋,即select的數(shù)據(jù)列只從索引中就能得到,不必讀取數(shù)據(jù)行,也就是只需掃描索引就可以得到查詢(xún)結(jié)果。

關(guān)于覆蓋索引的幾點(diǎn)說(shuō)明

  1. 使用覆蓋索引,只需要從索引中就能檢索到需要的數(shù)據(jù),而不要再掃描數(shù)據(jù)表;
  2. 索引的體量往往要比數(shù)據(jù)表小很多,因此只讀取索引速度會(huì)非常快,也會(huì)極大減少數(shù)據(jù)訪問(wèn)量;
  3. MySQL的查詢(xún)優(yōu)化器會(huì)在執(zhí)行查詢(xún)前判斷,是否有一個(gè)索引可以覆蓋所有的查詢(xún)列;
  4. 并非所有類(lèi)型的索引都可以作為覆蓋索引,覆蓋索引必須要存儲(chǔ)索引列的值。像哈希索引、空間索引、全
  5. 文索引等并不會(huì)真正存儲(chǔ)索引列的值。

 5.2 如何判斷使用了覆蓋索引

當(dāng)一個(gè)查詢(xún)使用了覆蓋索引,在查詢(xún)分析器EXPLAINExtra列可以看到“Using index” 。

到此這篇關(guān)于MySQL 各個(gè)索引的使用詳解的文章就介紹到這了,更多相關(guān)MySQL 索引使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

本人博客:https://blog.csdn.net/weixin_46654114

您可能感興趣的文章:
  • mysql 添加索引 mysql 如何創(chuàng)建索引
  • MySQL索引類(lèi)型總結(jié)和使用技巧以及注意事項(xiàng)
  • MySQL查看、創(chuàng)建和刪除索引的方法
  • mysql性能優(yōu)化之索引優(yōu)化
  • 基于mysql全文索引的深入理解
  • Mysql中的Btree與Hash索引比較
  • MySQL 索引分析和優(yōu)化
  • Mysql使用索引的正確方法及索引原理詳解

標(biāo)簽:銅川 黃山 崇左 湖南 衡水 仙桃 湘潭 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL 各個(gè)索引的使用詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
    • 微信客服
    • 微信二維碼
    • 電話咨詢(xún)

    • 400-1100-266
    梅河口市| 嘉鱼县| 桐乡市| 衡山县| 五指山市| 安吉县| 沙雅县| 龙泉市| 廉江市| 体育| 信宜市| 淳化县| 阜平县| 临朐县| 南昌市| 株洲县| 西安市| 湾仔区| 西盟| 育儿| 海原县| 扎兰屯市| 澳门| 谷城县| 额济纳旗| 台山市| 陵川县| 玉溪市| 酉阳| 安徽省| SHOW| 沙坪坝区| 齐齐哈尔市| 蓬莱市| 宕昌县| 磐安县| 隆德县| 商南县| 白银市| 班玛县| 聂荣县|