婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL的查詢計劃中ken_len的值計算方法

MySQL的查詢計劃中ken_len的值計算方法

熱門標簽:沈陽智能外呼系統供應商 清遠申請400電話 桂林云電銷機器人收費 手機外呼系統違法嗎 如何選擇優質的外呼系統 地圖簡圖標注 谷歌地圖標注位置圖解 南通電銷外呼系統哪家強 東莞外呼企業管理系統

key_len的含義

在MySQL中,可以通過explain查看SQL語句所走的路徑,如下所示:

mysql> create table t(a int primary key, b int not null, c int not null, index(b));
 Query OK, 0 rows affected (0.01 sec)
 mysql> explain select b from t ;
 +----+-------------+-------+-------+---------------+------+---------+------+------+-------------+
 | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra    |
 +----+-------------+-------+-------+---------------+------+---------+------+------+-------------+
 | 1 | SIMPLE   | t   | index | NULL     | b  | 4    | NULL |  1 | Using index |
 +----+-------------+-------+-------+---------------+------+---------+------+------+-------------+
 1 row in set (0.00 sec)

其中,key_len表示使用的索引長度,是以字節為單位。在上面的例子中,由于int型占用4個字節,而索引中只包含了1列,所以,key_len是4。

下面是聯合索引的情況:

mysql> alter table t add index ix(b, c);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> explain select b, c from t ;
+----+-------------+-------+-------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra    |
+----+-------------+-------+-------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE   | t   | index | NULL     | ix  | 8    | NULL |  1 | Using index |
+----+-------------+-------+-------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)

聯合索引ix包含了2列,并且都使用到了,所以,這里ken_len是8。

到這里,我們已經可以理解key_len的含義了,似乎已經沒有什么可講的了,但是,MySQL中key_len的計算還有很多需要注意的地方。

例如,我們將b這一列的NOT NULL約束去掉,然后ken_len就和我們預期不一樣了,如下所示:

mysql> alter table t modify b int;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
 
mysql> explain select b from t;
+----+-------------+-------+-------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra    |
+----+-------------+-------+-------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE   | t   | index | NULL     | b  | 5    | NULL |  1 | Using index |
+----+-------------+-------+-------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)

MySQL中key_len計算規則

MySQL中,key_len的計算規則如下:

  • 如果列可以為空,則在數據類型占用字節的基礎上加1,如int型,不能為空key_len為4,可以為空key_len為5
  • 如果列是變長的,則在數據列所占字節的基數上再加2,如varbinary(10),不能為空,則key_len為10 + 2 ,可以為空則key_len為10+2+1
  • 如果是字符型,則還需要考慮字符集,如某列的定義是varchar(10),且是utf8,不能為空,則key_len為10 * 3 + 2,可以為空則key_len為10*3+2+1
  • 此外,decimal列的計算方法與上面一樣,如果可以為空,則在數據類型占用字節的基礎上加1,但是,decimal本身所占用字節數,計算就比較復雜。

根據官方文檔可以知道,decimal定義為decimal(M,D),其中,M是總的位數,D是小數點后保留的位數。小數點前與小數點后的數字分開存儲,且以9位數為1組,用4個字節保存,如果低于9位數,需要的字節數如下:

Leftover Digits Number of Bytes
-----------------------------
|0 |0 |
|1-2 |1 |
|3-4 |2 |
|5-6 |3 |
|7-9 |4 |
-----------------------------

例如:

decimal(20,6)=> 小數點左邊14位,小數點右邊6位 => 小數點左邊分組為5 + 9,需要3個字節+4個字節存儲,小數點一個分組,需要3個字節存儲 => 總共需要10個字節
decimal(18,9)=> 小數點左邊9位數,小數點右邊9位數 => 分別使用4個字節存儲 => 共需要 8個字節
decimal(18,2)=> 小數點左邊16位數,小數點右邊2位數 => 分組為7 + 9,需要8個字節存儲,小數點右邊1個字節存儲 => 共需要9個字節

通過key_len分析聯合索引

如下所示,我們定義了一個表t,表t包含a、b、c、d共4列:

mysql> show create table t\G
*************************** 1. row ***************************
    Table: t
Create Table: CREATE TABLE `t` (
 `a` int(11) NOT NULL,
 `b` int(11) DEFAULT NULL,
 `c` int(11) DEFAULT NULL,
 `d` int(11) DEFAULT NULL,
 PRIMARY KEY (`a`),
 KEY `ix_x` (`b`,`d`,`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

現在要執行SQL語句如下:

select a from t where b = 5 and d = 10 order by c;

假設我們有一個索引ix_x(b,d,c),通過explain得到如下輸出:

mysql> explain select a from t where b = 5 and d = 10 order by c;
+----+-------------+-------+------+---------------+------+---------+-------------+------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref     | rows | Extra          |
+----+-------------+-------+------+---------------+------+---------+-------------+------+--------------------------+
| 1 | SIMPLE   | t   | ref | ix_x     | ix_x | 10   | const,const |  1 | Using where; Using index |
+----+-------------+-------+------+---------------+------+---------+-------------+------+--------------------------+
1 row in set (0.00 sec)

可以看到,查詢語句使用了聯合索引中的b和d兩列來過濾數據。

如果我們定義的聯合索引不是`ix_x(b,d,c)`,而是`ix_x(b, c, d)`,通過explain得到的輸入如下:

mysql> alter table t drop index ix_x;
mysql> alter table t add index ix_x(b, c, d);
mysql> explain select a from t where b = 5 and d = 10 order by c;
+----+-------------+-------+------+---------------+------+---------+-------+------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref  | rows | Extra          |
+----+-------------+-------+------+---------------+------+---------+-------+------+--------------------------+
| 1 | SIMPLE   | t   | ref | ix_x     | ix_x | 5    | const |  2 | Using where; Using index |
+----+-------------+-------+------+---------------+------+---------+-------+------+--------------------------+
1 row in set (0.00 sec)

key_len為5,也就是說,只用到了聯合索引中的第一列,可以看到,雖然聯合索引包含了我們要查詢的所有列,但是,由于定義的順序問題,SQL語句并不能夠充分利用索引。

您可能感興趣的文章:
  • mysql計算時間差函數
  • Mysql中通過生日計算年齡的多種方法
  • 在php和MySql中計算時間差的方法
  • mysql 字符串長度計算實現代碼(gb2312+utf8)
  • Mysql數據庫的QPS和TPS的意義和計算方法
  • MySQL幾點重要的性能指標計算和優化方法總結
  • 淺談mysql explain中key_len的計算方法
  • mysql日期和時間的間隔計算實例分析
  • MySQL日期加減函數詳解
  • mysql 觸發器創建與使用方法示例
  • MySQL觸發器基本用法詳解【創建、查看、刪除等】
  • mysql累加計算實現方法詳解

標簽:內蒙古 成都 湖州 重慶 常德 貴州 臨沂 天津

巨人網絡通訊聲明:本文標題《MySQL的查詢計劃中ken_len的值計算方法》,本文關鍵詞  MySQL,的,查詢,計劃,中,ken,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL的查詢計劃中ken_len的值計算方法》相關的同類信息!
  • 本頁收集關于MySQL的查詢計劃中ken_len的值計算方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人丝袜高跟foot| 日本成人在线视频网站| 日韩免费成人网| 欧美一区二区三区色| 欧美日韩一区二区三区四区| 日本精品一级二级| 欧美性一区二区| 欧美乱妇20p| 日韩视频免费直播| 精品国产亚洲在线| 国产欧美精品区一区二区三区 | 精品一区二区三区香蕉蜜桃 | 成人免费观看男女羞羞视频| 国产成人一区二区精品非洲| 成人丝袜18视频在线观看| 91影院在线观看| 欧美二区乱c少妇| 欧美精品一区二区三区蜜臀| 欧美激情一区二区三区不卡| 亚洲狼人国产精品| 麻豆国产欧美日韩综合精品二区 | 欧美视频在线一区| 欧美电影一区二区| 精品播放一区二区| 日韩毛片精品高清免费| 天天免费综合色| 豆国产96在线|亚洲| 欧美唯美清纯偷拍| 久久精品夜夜夜夜久久| 亚洲一区免费视频| 国产激情视频一区二区三区欧美 | 国产福利一区二区三区视频| 91香蕉视频在线| 日韩欧美成人一区| 亚洲乱码一区二区三区在线观看| 亚洲成人免费在线观看| 国产传媒欧美日韩成人| 欧美精品v国产精品v日韩精品| 国产日韩欧美在线一区| 日韩1区2区3区| 色视频一区二区| 国产亚洲一区二区三区| 视频一区二区欧美| 91亚洲精华国产精华精华液| 久久蜜桃一区二区| 奇米精品一区二区三区四区| 色一情一伦一子一伦一区| 久久久久国产精品免费免费搜索| 亚洲福利一区二区三区| 北岛玲一区二区三区四区| 久久伊人蜜桃av一区二区| 无码av免费一区二区三区试看| 91免费看视频| 国产精品婷婷午夜在线观看| 国产精品一区免费视频| 欧美va亚洲va| 欧美aaaaa成人免费观看视频| 在线免费亚洲电影| 亚洲视频每日更新| av中文字幕一区| 国产精品家庭影院| 粉嫩aⅴ一区二区三区四区五区| 欧美成va人片在线观看| 日韩电影在线观看网站| 欧美精品第1页| 日韩黄色在线观看| 91精品在线观看入口| 一区二区三区欧美日| 在线观看一区二区精品视频| 亚洲欧美国产毛片在线| 97成人超碰视| 亚洲中国最大av网站| 欧美在线观看一二区| 亚洲福利一区二区| 日韩三级精品电影久久久| 日本中文字幕一区| 精品国产精品网麻豆系列| 国产精品综合一区二区三区| 精品久久久久久久久久久久包黑料| 激情综合色综合久久综合| 久久精品一二三| 99久久免费视频.com| 亚洲激情在线激情| 欧美日韩三级一区二区| 青青草原综合久久大伊人精品 | 亚洲国产高清aⅴ视频| 成人三级伦理片| 亚洲乱码日产精品bd| 欧美一区二区三区日韩视频| 狠狠色丁香九九婷婷综合五月| 久久久久久久久久久久久夜| 波多野结衣视频一区| 亚洲图片欧美视频| 日韩欧美一区在线| 高清成人免费视频| 亚洲风情在线资源站| 精品国产精品一区二区夜夜嗨| 成人av免费在线播放| 五月激情综合婷婷| 国产视频一区在线播放| 欧美影院午夜播放| 国产在线精品一区二区三区不卡| 国产三级一区二区| 69堂亚洲精品首页| 成人免费黄色在线| 日韩av不卡一区二区| 中文幕一区二区三区久久蜜桃| 欧美日韩综合不卡| 东方aⅴ免费观看久久av| 亚洲午夜视频在线观看| 久久五月婷婷丁香社区| 欧美综合天天夜夜久久| 懂色中文一区二区在线播放| 午夜精品久久久久| 亚洲欧美国产三级| 国产日产精品一区| 日韩欧美国产wwwww| 色妞www精品视频| 国产成人丝袜美腿| 日韩av在线发布| 亚洲一二三区不卡| 国产精品久久久久久久蜜臀| 精品欧美黑人一区二区三区| 欧美日韩免费观看一区二区三区 | 欧美日本在线观看| 97久久精品人人做人人爽| 韩国成人福利片在线播放| 日本伊人色综合网| 亚洲高清视频在线| 亚洲制服丝袜一区| 亚洲欧美日韩国产综合| 中文字幕欧美日韩一区| 久久亚洲精精品中文字幕早川悠里 | 欧美日本高清视频在线观看| 色婷婷激情综合| 99精品在线免费| 99久久久精品| 成人av电影在线| 成人短视频下载| 成人动漫av在线| av一区二区三区| 99久久国产综合精品色伊| 波多野结衣的一区二区三区| 成人午夜在线视频| 丁香一区二区三区| 99精品欧美一区二区三区小说 | 中文成人综合网| 国产丝袜欧美中文另类| 国产三级一区二区| 欧美国产综合色视频| 中文字幕一区二区三| 亚洲色图20p| 亚洲一二三四区| 午夜欧美视频在线观看| 日本中文在线一区| 国产福利精品导航| 91在线国内视频| 欧美日韩第一区日日骚| 日韩欧美亚洲国产另类| 久久免费的精品国产v∧| 国产精品久久影院| 亚洲一区二区黄色| 日韩avvvv在线播放| 国产精品亚洲第一区在线暖暖韩国| 国产精品一区二区无线| 99精品视频中文字幕| 欧美色图天堂网| 欧美精品一区二区三区一线天视频| 国产欧美一区二区精品性色超碰| 亚洲天堂av一区| 日韩av一区二区在线影视| 国产福利视频一区二区三区| 色哟哟一区二区| 337p日本欧洲亚洲大胆色噜噜| 国产精品你懂的| 日韩国产一区二| 不卡的av中国片| 欧美精品黑人性xxxx| 国产日韩欧美a| 亚洲123区在线观看| 国产精品一二三四区| 欧美日韩另类一区| 国产午夜一区二区三区| 亚洲mv在线观看| 成人午夜视频在线观看| 欧美精品色综合| 中文字幕在线不卡| 成人午夜精品在线| 在线不卡中文字幕| 风间由美性色一区二区三区| 日本二三区不卡| 国产欧美精品国产国产专区| 日韩黄色小视频| 99久久婷婷国产精品综合| 久久综合久久综合久久综合| 亚洲大片一区二区三区| 成人动漫中文字幕| 国产日韩高清在线| 久久国产麻豆精品| 91精品国产综合久久福利软件|