欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL索引不會(huì)被用到的情況匯總

 更新時(shí)間:2019年08月12日 09:05:42   作者:Sanarous  
這篇文章主要給大家介紹了關(guān)于MySQL索引不會(huì)被用到的一些情況,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

MySQL中索引的類型

一般可分為四類:

  • 普通索引:最普通的索引
  • 唯一索引:索引列的值必須唯一,但允許有空值
  • 主鍵索引:一種特殊的唯一索引,不允許有空值
  • 聯(lián)合索引:索引列有多個(gè)字段,使用時(shí)需要滿足最左前綴原則

普通索引

這是最基本的索引,它沒有任何限制。它有以下幾種創(chuàng)建方式:

1.創(chuàng)建索引

代碼如下:

CREATE INDEX indexName ON mytable(username(length));

如果是 CHAR,VARCHAR 類型,length 可以小于字段實(shí)際長(zhǎng)度;如果是 BLOB 和 TEXT 類型,必須指定 length,下同。

2.修改表結(jié)構(gòu)

代碼如下:

ALTER mytable ADD INDEX [indexName] ON (username(length))

創(chuàng)建表的時(shí)候直接指定

CREATE TABLE mytable(
 ID INT NOT NULL,
 username VARCHAR(16) NOT NULL,
 INDEX [indexName] (username(length))
);

刪除索引的語法:

DROP INDEX [indexName] ON mytable;

唯一索引

它與前面的普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種創(chuàng)建方式:

CREATE UNIQUE INDEX indexName ON mytable(username(length))

修改表結(jié)構(gòu):

ALTER mytable ADD UNIQUE [indexName] ON (username(length))

創(chuàng)建表的時(shí)候直接指定:

CREATE TABLE mytable(  
	ID INT NOT NULL,  
	username VARCHAR(16) NOT NULL,  
	UNIQUE [indexName] (username(length))  
);

主鍵索引

它是一種特殊的唯一索引,不允許有空值。一般是在建表的時(shí)候同時(shí)創(chuàng)建主鍵索引:

代碼如下:

CREATE TABLE mytable(  
	ID INT NOT NULL,  
	username VARCHAR(16) NOT NULL,  
	PRIMARY KEY(ID) 
);

當(dāng)然也可以用 ALTER 命令。記住:一個(gè)表只能有一個(gè)主鍵。

聯(lián)合索引

為了形象地對(duì)比單列索引和組合索引,為表添加多個(gè)字段:

CREATE TABLE mytable(  
	ID INT NOT NULL,  
	username VARCHAR(16) NOT NULL,  
	city VARCHAR(50) NOT NULL,  
	age INT NOT NULL 
);

為了進(jìn)一步榨取 MySQL 的效率,就要考慮建立組合索引。就是將 name, city, age 建到一個(gè)索引里:

代碼如下:

ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);

索引用不上的情況

索引不是每次都可以生效的,如果我們操作不對(duì),那么很有可能是走全表掃描而不是走的索引,Explain 中的 possible_key、key_len 以及 key 參數(shù)都可以分析我們的 SQL 語句是否用到了索引。

以下情況將會(huì)導(dǎo)致索引失效

  1. 查詢的列中使用了 != 比如 select id,name,age from student where id != 2;
  2. 查詢的列中使用了函數(shù)操作,比如 pow(id,2) 對(duì) id 做平方這種函數(shù)表達(dá)式,也不會(huì)用到索引
  3. 如果條件中有 or,即使其中有部分條件帶索引也不會(huì)使用(這也是為什么盡量少用or的原因)
  4. 聯(lián)合索引中即使?jié)M足最左前綴原則,但是第一個(gè)條件帶了范圍查詢,那么也不會(huì)用到索引
  5. 存在索引列的數(shù)據(jù)類型隱形轉(zhuǎn)換,則用不上索引,比如列類型是字符串,那一定要在條件中將數(shù)據(jù)使用引號(hào)引用起來,否則不使用索引
  6. 如果 MySQL 估計(jì)使用全表掃描要比使用索引快,則不使用索引

以上都可以使用 Explain 進(jìn)行測(cè)試是否用到了索引。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • mysql觸發(fā)器中監(jiān)控字段的改變方式

    mysql觸發(fā)器中監(jiān)控字段的改變方式

    這篇文章主要介紹了mysql觸發(fā)器中監(jiān)控字段的改變方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MySQL Innodb關(guān)鍵特性之插入緩沖(insert buffer)

    MySQL Innodb關(guān)鍵特性之插入緩沖(insert buffer)

    這篇文章主要介紹了MySQL Innodb關(guān)鍵特性之插入緩沖的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Innodb存儲(chǔ)引擎,感興趣的朋友可以了解下
    2021-04-04
  • SQL語句中SUM與COUNT的區(qū)別深入分析

    SQL語句中SUM與COUNT的區(qū)別深入分析

    本篇文章是對(duì)SQL語句中SUM與COUNT的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql聲明游標(biāo)的方法

    mysql聲明游標(biāo)的方法

    在本篇文章里小編給大家整理的是關(guān)于mysql聲明游標(biāo)的方法和實(shí)例內(nèi)容,需要的朋友們可以參考下。
    2020-09-09
  • MySQL筑基篇之增刪改查操作詳解

    MySQL筑基篇之增刪改查操作詳解

    這篇文章主要和大家講解一下MySQL數(shù)據(jù)庫的增刪改查操作,這里的查詢確切的說應(yīng)該是初級(jí)的查詢,不涉及函數(shù)、分組等模塊,需要的可以參考一下
    2022-07-07
  • 一篇文章帶你了解MySQL之undo日志

    一篇文章帶你了解MySQL之undo日志

    Undo日志也叫做回滾日志,是MySQL數(shù)據(jù)庫當(dāng)中一種重要的日志,用于記錄更新操作之前的數(shù)據(jù)狀態(tài),這篇文章主要給大家介紹了關(guān)于如何通過一篇文章帶你了解MySQL之undo日志的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • mysql 主從復(fù)制如何跳過報(bào)錯(cuò)

    mysql 主從復(fù)制如何跳過報(bào)錯(cuò)

    這篇文章主要介紹了mysql 主從復(fù)制如何跳過報(bào)錯(cuò),幫助大家更好的理解和使用MySQL 數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-10-10
  • 為什么MySQL 刪除表數(shù)據(jù) 磁盤空間還一直被占用

    為什么MySQL 刪除表數(shù)據(jù) 磁盤空間還一直被占用

    這篇文章主要討論為什么MySQL 刪除表數(shù)據(jù) 磁盤空間還一直被占用,項(xiàng)目中使用Mysql作為數(shù)據(jù)庫,對(duì)于表來說,一般為表結(jié)構(gòu)和表數(shù)據(jù)。表結(jié)構(gòu)占用空間都是比較小的,一般都是表數(shù)據(jù)占用的空間。接下來小編就和大家一起進(jìn)入下面文章內(nèi)容的學(xué)習(xí)
    2021-10-10
  • mysql 某字段插入隨機(jī)數(shù)(插入隨機(jī)數(shù)到MySQL數(shù)據(jù)庫)

    mysql 某字段插入隨機(jī)數(shù)(插入隨機(jī)數(shù)到MySQL數(shù)據(jù)庫)

    這篇文章主要介紹了mysql 某字段插入隨機(jī)數(shù)(插入隨機(jī)數(shù)到MySQL數(shù)據(jù)庫),需要的朋友可以參考下
    2016-09-09
  • MySQL解壓版配置步驟詳細(xì)教程

    MySQL解壓版配置步驟詳細(xì)教程

    這篇文章主要介紹了MySQL解壓版配置步驟詳細(xì)教程的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12

最新評(píng)論