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

詳解MySQL數據庫常見的索引問題:無索引,隱式轉換,附實例說明

數據庫 MySQL
在這些年的工作之中,由于SQL問題導致的數據庫故障層出不窮,而索引問題是SQL問題中出現頻率最高的,常見的索引問題包括:無索引,隱式轉換。

 [[276045]]

概述

在這些年的工作之中,由于SQL問題導致的數據庫故障層出不窮,而索引問題是SQL問題中出現頻率最高的,常見的索引問題包括:無索引,隱式轉換。

索引問題

1、無索引

當數據庫中出現訪問表的SQL無索引導致全表掃描,如果表的數據量很大,掃描大量的數據,應用請求變慢占用數據庫連接,連接堆積很快達到數據庫的最大連接數設置,新的應用請求將會被拒絕導致故障發生。

2、隱式轉換

隱式轉換是指SQL查詢條件中的傳入值與對應字段的數據定義不一致導致索引無法使用。常見隱士轉換如字段的表結構定義為字符類型,但SQL傳入值為數字;或者是字段定義collation為區分大小寫,在多表關聯的場景下,其表的關聯字段大小寫敏感定義各不相同。隱式轉換會導致索引無法使用,進而出現上述慢SQL堆積數據庫連接數跑滿的情況。

無索引實例

表結構:

詳解mysql數據庫常見的索引問題--無索引,隱式轉換,附實例說明

執行計劃:

詳解mysql數據庫常見的索引問題--無索引,隱式轉換,附實例說明

從上面的SQL看到執行計劃中ALL,代表了這條SQL執行計劃是全表掃描,每次執行需要掃描707250行數據,這是非常消耗性能的,該如何進行優化?添加索引。

驗證mo字段的過濾性:

詳解mysql數據庫常見的索引問題--無索引,隱式轉換,附實例說明

可以看到mo字段的過濾性是非常高的,進一步驗證可以通過select count(*) as all_count,count(distinct mo) as distinct_cnt from user,通對比 all_count和distinct_cnt這兩個值進行對比,如果all_cnt和distinct_cnt相差甚多,則在mo字段上添加索引是非常有效的。

添加索引

  1. mysql> alter table user add index ind_mo(mo); 
  2. mysql>SELECT uid FROM `userWHERE mo=13772556391 LIMIT 0,1; 

執行計劃:

詳解mysql數據庫常見的索引問題--無索引,隱式轉換,附實例說明

 

隱式轉換

表結構:

詳解mysql數據庫常見的索引問題--無索引,隱式轉換,附實例說明

執行計劃:

  1. mysql> explain extended select uid from`userwhere mo=13772556391 limit 0,1; 
  2. mysql> show warnings; 
  3. Warning1:Cannot use index 'ind_mo' due to type or collation conversion on field 'mo'  
  4. Note:select `user`.`uid` AS `uid` from `userwhere (`user`.`mo` = 13772556391) limit 0,1 

如何解決:

詳解mysql數據庫常見的索引問題--無索引,隱式轉換,附實例說明

上述案例中由于表結構定義mo字段后字符串數據類型,而應用傳入的則是數字,進而導致了隱式轉換,索引無法使用,所以有兩種方案:

第一,將表結構mo修改為數字數據類型。

第二,修改應用將應用中傳入的字符類型改為數據類型。

總結

在使用索引時,我們可以通過explain+extended查看SQL的執行計劃,判斷是否使用了索引以及發生了隱式轉換。

由于常見的隱式轉換是由字段數據類型以及collation定義不當導致,因此我們在設計開發階段,要避免數據庫字段定義,避免出現隱式轉換。

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2010-07-19 09:40:59

SQL Server數

2010-05-26 13:42:08

MySQL數據庫索引

2023-11-16 17:12:33

數據庫oracle

2010-05-12 11:14:25

MySQL SQL優化

2021-11-01 23:57:03

數據庫哈希索引

2009-04-22 14:19:32

Oracle中文索引基礎

2011-03-16 08:54:45

Oracle數據庫索引

2021-12-23 10:54:35

數據庫索引技術

2011-07-28 16:16:27

MySQL數據庫索引ORDER BY

2018-06-26 15:58:06

數據庫MySQL索引優化

2011-03-31 13:51:54

MySQL索引

2019-11-29 07:37:44

Oracle數據庫索引

2011-04-07 16:43:23

MySQL數據庫

2021-11-30 21:10:19

數據庫B樹索引

2017-02-08 11:00:50

數據庫索引類型

2010-05-31 12:10:37

2010-05-21 10:01:11

MySQL數據庫

2011-07-18 15:59:17

MySQL數據庫

2021-03-27 11:05:24

數據庫索引MySQL

2021-04-09 08:21:25

數據庫索引數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日产精品久久久一区二区福利 | 男女国产视频 | 成人免费观看网站 | 黄视频网址 | 日韩欧美国产精品 | 色毛片 | 91激情视频 | 91精品久久久久久久久 | 久久久美女 | 亚洲一二三区在线观看 | 国产一区欧美 | 国产美女福利在线观看 | 殴美一级片| 精品国产乱码久久久久久影片 | 成人深夜小视频 | 在线观看免费观看在线91 | 国产美女在线精品免费 | 国产在线麻豆精品入口 | 久久免费精品 | 国产9999精品 | 久久久人成影片一区二区三区 | 久久久久国产一区二区三区 | 五月天国产| 999久久久久久久久6666 | 精品一区二区av | 亚洲国产一区二区视频 | 日韩在线电影 | 国产精品自产拍 | 国产精品国产精品国产专区不片 | 成人1区| 国产精品久久久久久久三级 | 97精品国产97久久久久久免费 | 精品91视频 | 黄色一级在线播放 | 最近中文字幕在线视频1 | 中文一区 | av中文字幕在线 | 国产精品久久久久久久7电影 | 日日干夜夜操天天操 | 欧美日韩久久精品 | 91久久国产综合久久 |