成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么你創建的數據庫索引沒有生效?

運維 數據庫運維 MySQL
幾乎所有的小伙伴都可以隨口說幾句關于創建索引的優缺點,也知道什么時候創建索引能夠提高我們的查詢性能,什么時候索引會更新,但是你有沒有注意到,即使你設置了索引,有些時候索引他是不會生效的!這不僅考察了大家對索引的了解程度,還要讓大家在使用的時候能夠正確的使用。

幾乎所有的小伙伴都可以隨口說幾句關于創建索引的優缺點,也知道什么時候創建索引能夠提高我們的查詢性能,什么時候索引會更新,但是你有沒有注意到,即使你設置了索引,有些時候索引他是不會生效的!這不僅考察了大家對索引的了解程度,還要讓大家在使用的時候能夠正確的使用。以下介紹了一些可能會造成索引失效的特殊情況,希望大家在平時開發和面試的時候能夠注意到!

一、如何判斷數據庫索引是否生效

首先在接著探討之前,我們先說一下,如何判斷數據庫的索引是否生效!相信大家應該猜到了,就是explain!explain顯示了MySQL如何使用索引來處理select語句以及連接表。他可以幫助選擇更好的索引和寫出更優化的查詢語句。

例如我們有一張表user,為name列創建索引name_index,如下所示:

使用explain分析語句如下:

可以看到,使用explain顯示了很多列,各個關鍵字的含義如下:

  • table:顧名思義,顯示這一行的數據是關于哪張表的;
  • type:這是重要的列,顯示連接使用了何種類型。從***到最差的連接類型為:const、eq_reg、ref、range、indexhe和ALL;
  • possible_keys:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。可以為相關的域從where語句中選擇一個合適的語句;
  • key: 實際使用的索引。如果為NULL,則沒有使用索引。很少的情況下,MySQL會選擇優化不足的索引。這種情況下,可以在Select語句中使用USE INDEX(indexname)來強制使用一個索引或者用IGNORE INDEX(indexname)來強制MySQL忽略索引;
  • key_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好;
  • ref:顯示索引的哪一列被使用了,如果可能的話,是一個常數;
  • rows:MySQL認為必須檢查的用來返回請求數據的行數;
  • Extra:關于MySQL如何解析查詢的額外信息。

具體的各個列所能表示的值以及含義可以參考MySQL官方文檔介紹,地址:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html

二、哪些場景會造成索引生效

1、應盡量避免在 where 子句中使用 != 或 <> 操作符,否則引擎將放棄使用索引而進行全表掃描;

2、盡量避免在 where 子句中使用 or 來連接條件,否則將導致引擎放棄使用索引而進行全表掃描,即使其中有條件帶索引也不會使用,這也是為什么盡量少用 or 的原因;

3、對于多列索引,不是使用的***部分,則不會使用索引;

4、如果列類型是字符串,那一定要在條件中將數據使用引號引用起來,否則不會使用索引;

5、like的模糊查詢以 % 開頭,索引失效;

6、應盡量避免在 where 子句中對字段進行表達式操作,這將導致引擎放棄使用索引而進行全表掃描;

 

7、應盡量避免在 where 子句中對字段進行函數操作,這將導致引擎放棄使用索引而進行全表掃描;

8、不要在 where 子句中的 “=” 左邊進行函數、算術運算或其他表達式運算,否則系統將可能無法正確使用索引;

9、如果MySQL估計使用全表掃描要比使用索引快,則不使用索引;

10、不適合鍵值較少的列(重復數據較多的列)

假如索引列TYPE有5個鍵值,如果有1萬條數據,那么 WHERE TYPE = 1將訪問表中的2000個數據塊。再加上訪問索引塊,一共要訪問大于200個的數據塊。如果全表掃描,假設10條數據一個數據塊,那么只需訪問1000個數據塊,既然全表掃描訪問的數據塊少一些,肯定就不會利用索引了。 

責任編輯:龐桂玉 來源: 快資訊
相關推薦

2021-09-28 06:57:22

JWT過期生效

2020-02-25 17:04:05

數據庫云原生分布式

2021-08-04 10:51:04

數據庫單元測試SQL

2023-12-20 12:49:05

索引數據檢索數據庫

2019-03-14 09:51:50

MySQL存儲邏輯架構

2022-06-24 08:01:07

CSScontent元素

2022-04-14 08:21:35

數據庫查詢變慢MySQL

2020-03-27 16:05:49

數據庫數據MySQL

2010-05-21 10:01:11

MySQL數據庫

2020-02-19 15:01:30

數據庫SQL技術

2017-09-26 11:06:15

數據庫索引查詢

2010-09-16 08:38:19

數據庫索引

2022-11-14 07:52:14

時間序列數據庫CPU

2025-06-16 01:30:00

大數據

2009-06-11 13:12:59

Oracle索引創建索引

2018-08-26 15:39:03

數據庫MySQL索引

2024-04-07 00:02:00

2021-05-08 14:07:26

SQLServer數據庫

2010-05-31 12:10:37

2019-08-20 22:06:32

Oracle數據庫索引
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品特级毛片一区二区三区 | 九九热这里 | 欧美一级免费看 | 一区中文 | 男人的天堂视频网站 | 精品国产精品三级精品av网址 | 九九热精品在线 | 91视频在线观看 | 午夜精品久久久久久不卡欧美一级 | 国产精品1区 | 天天天插 | 国产精品久久久久久久免费大片 | 99久久精品免费看国产四区 | 97av视频在线观看 | 国产精品免费av | 国产精品99久久久久久久久久久久 | 免费人成在线观看网站 | 国产在线1 | 国产日产久久高清欧美一区 | 天天躁日日躁xxxxaaaa | 欧美在线视频一区二区 | 黑人巨大精品欧美一区二区免费 | 日韩一级免费电影 | 国内精品久久久久久久影视简单 | 午夜看电影在线观看 | 亚洲国产成人精品女人久久久野战 | 国产一区二区激情视频 | 久久久久久综合 | 国产天堂| 一区二区三区四区日韩 | 成人免费网站在线 | 日韩电影一区二区三区 | 毛片一区二区三区 | 99精品国产一区二区青青牛奶 | 国产精品日韩欧美一区二区三区 | 91原创视频 | 久久99精品久久久久婷婷 | 久久久91精品国产一区二区精品 | 天天干天天操天天看 | 三级黄色大片网站 | 毛片一区二区三区 |