成人免费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

數據庫哈希索引

2011-03-16 08:54:45

Oracle數據庫索引

2009-04-22 14:19:32

Oracle中文索引基礎

2021-12-23 10:54:35

數據庫索引技術

2011-07-28 16:16:27

MySQL數據庫索引ORDER BY

2019-11-29 07:37:44

Oracle數據庫索引

2021-11-30 21:10:19

數據庫B樹索引

2018-06-26 15:58:06

數據庫MySQL索引優化

2011-03-31 13:51:54

MySQL索引

2011-04-07 16:43:23

MySQL數據庫

2017-02-08 11:00:50

數據庫索引類型

2011-07-18 15:59:17

MySQL數據庫

2010-05-21 10:01:11

MySQL數據庫

2010-05-31 12:10:37

2023-12-20 12:49:05

索引數據檢索數據庫

2021-03-27 11:05:24

數據庫索引MySQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩久久久久久久久久久 | 国产精品久久久久久久久免费丝袜 | 一级做a爰片性色毛片16美国 | 国产乱码精品一品二品 | gav成人免费播放视频 | 亚洲国产一区二区视频 | 国产一区二区电影 | 视频三区 | 国产伦精品一区二区三区精品视频 | 激情五月婷婷综合 | 福利一区在线观看 | 在线观看成人av | 中文字幕亚洲欧美日韩在线不卡 | 成人不卡一区二区 | 大吊一区二区 | 久草青青草 | hdfreexxxx中国妞 | 亚洲高清免费视频 | 色本道| 91久久精品国产91久久性色tv | 国产欧美一级 | 久久毛片| 第一福利社区1024 | 一区二区三 | 久久久精品网 | 韩日在线视频 | 久久精品视频在线观看 | 成人免费大片黄在线播放 | 国产精品永久免费 | 国产自产21区 | 夜夜艹天天干 | 99精品免费视频 | 成人av色 | 午夜精品影院 | 日韩性生活网 | 一级大黄 | 亚洲精品视频在线观看免费 | 国产一级免费在线观看 | 四虎国产 | 午夜影视免费片在线观看 | 色橹橹欧美在线观看视频高清 |