最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 各個索引的使用詳解

 更新時間:2020年11月27日 09:32:49   作者:RodmaChen  
這篇文章主要介紹了MySQL 各個索引的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一. 慢查詢?nèi)罩?

1.1 MySQL的日志類型

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

在這里插入圖片描述

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

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

在這里插入圖片描述

1.3 如何開啟慢查詢?nèi)罩久?/strong>

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

查看是否開啟慢查詢?nèi)罩?/strong>

show variables like 'slow%';

臨時開啟慢查詢?nèi)罩?/strong>

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

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

show variables like '%datadir%';

二. 查詢分析器——EXPLAIN

 2.1 explain簡介

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

explain能做什么?

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

 2.2 explain的使用

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

命令解釋:

在這里插入圖片描述

三. 索引的基本使用

3.1 什么是索引

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

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

3.2 常見的索引種類

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

數(shù)據(jù)庫的索引好比一本書的目錄,能夠加快數(shù)據(jù)庫的查詢速度;索引是快速搜索的關(guān)鍵,如果不加索引,查找任何一條特定的數(shù)據(jù)都會進(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 索引的實戰(zhàn)經(jīng)驗

在這里插入圖片描述

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

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

列:

未使用索引

select * from employee where salary=8800;
select * from employee where dept='部門A';
select * from employee where salary=8800 and dept='部門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='部門A';

五. 覆蓋索引

5.1 什么是覆蓋索引

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

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

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

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

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

在這里插入圖片描述

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

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

相關(guān)文章

  • MySQL的mysqldump工具用法詳解

    MySQL的mysqldump工具用法詳解

    這篇文章主要介紹了MySQL的mysqldump工具用法詳解,同時附帶了相關(guān)Source命令的用法,詳解需要的朋友可以參考下
    2015-07-07
  • JMeter對MySQL數(shù)據(jù)庫進(jìn)行壓力測試的實現(xiàn)步驟

    JMeter對MySQL數(shù)據(jù)庫進(jìn)行壓力測試的實現(xiàn)步驟

    本文主要介紹了JMeter對MySQL數(shù)據(jù)庫進(jìn)行壓力測試的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • MySQL中的binary類型使用操作

    MySQL中的binary類型使用操作

    這篇文章主要介紹了MySQL中的binary類型使用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • MySQL中修改庫名的操作教程

    MySQL中修改庫名的操作教程

    這篇文章主要介紹了MySQL中修改庫名的操作教程,是MySQL學(xué)習(xí)當(dāng)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • linux下利用Docker安裝mysql的步驟

    linux下利用Docker安裝mysql的步驟

    這篇文章主要給大家介紹了關(guān)于在linux下利用Docker安裝mysql的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Mysql LONGTEXT 類型存儲大文件(二進(jìn)制也可以) (修改+調(diào)試+整理)

    Mysql LONGTEXT 類型存儲大文件(二進(jìn)制也可以) (修改+調(diào)試+整理)

    MySql2.cpp : Defines the entry point for the console application.
    2009-07-07
  • 解析MySQL中INSERT INTO SELECT的使用

    解析MySQL中INSERT INTO SELECT的使用

    本篇文章是對MySQL中INSERT INTO SELECT的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • 查看修改mysql編碼方式讓它支持中文(gbk或者utf8)

    查看修改mysql編碼方式讓它支持中文(gbk或者utf8)

    MySQL的默認(rèn)編碼是Latin1,不支持中文,要支持中文需要把數(shù)據(jù)庫的默認(rèn)編碼修改為gbk或者utf8,真的是很麻煩啊,不過本文提供了詳細(xì)的修改教程,感興趣的你可不要走開啊,希望本文對你有所幫助
    2013-01-01
  • 一鍵搭建MYSQL主從,輕松應(yīng)對數(shù)據(jù)備份與恢復(fù)

    一鍵搭建MYSQL主從,輕松應(yīng)對數(shù)據(jù)備份與恢復(fù)

    MYSQL主從是一種常見的數(shù)據(jù)庫架構(gòu),它可以提高數(shù)據(jù)庫的可用性和性能,在主從架構(gòu)中,主數(shù)據(jù)庫負(fù)責(zé)處理寫操作,而從數(shù)據(jù)庫負(fù)責(zé)處理讀操作,當(dāng)主數(shù)據(jù)庫發(fā)生故障時,從數(shù)據(jù)庫可以接管并繼續(xù)提供服務(wù),從而實現(xiàn)高可用性,需要的朋友可以參考下
    2023-10-10
  • Navicat 遠(yuǎn)程連接 MySQL實現(xiàn)步驟解析

    Navicat 遠(yuǎn)程連接 MySQL實現(xiàn)步驟解析

    這篇文章主要介紹了Navicat 遠(yuǎn)程連接 MySQL實現(xiàn)步驟解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08

最新評論

弥渡县| 清流县| 四子王旗| 米易县| 微博| 沧州市| 周宁县| 郸城县| 灵寿县| 孟村| 遵化市| 瑞昌市| 荆州市| 阿瓦提县| 泽库县| 宜都市| 水富县| 西城区| 巴东县| 集贤县| 耒阳市| 叙永县| 汝南县| 基隆市| 安泽县| 信丰县| 赫章县| 涿州市| 沁源县| 安顺市| 库伦旗| 牙克石市| 上栗县| 华亭县| 宝鸡市| 文成县| 威海市| 江阴市| 嵊州市| 辽中县| 岳普湖县|