亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > 文庫 > 正文

隱式轉換引起的sql慢查詢實戰記錄

2020-10-29 21:46:49
字體:
來源:轉載
供稿:網友

引言

實在很無語呀,遇到一個mysql隱式轉換問題,問了周邊的dba大拿該問題,他們居然反問我,你連這個也不知道?白白跟他們混了那么長   尼瑪,我還真不知道。罪過罪過…. 

問題是這樣的,一個字段叫task_id, 本身是varchar字符串類型,但是因為老系統時間太長了,我以為是int或者bigint,所以直接在代碼寫sql跑數據,結果等了好久就是沒有反應,感覺要壞事呀。在mysql processlist里看到了該sql語句,直接kill掉。 該字段是有索引的,并且他的sql選擇性很高,索引的價值也高。 但為什么這么慢?

分析問題

通過explain分析出了結果,當使用整型來查詢字符串的字段會出現無法走索引的情況,看下面可以知道,key為NULL,沒走索引,Rows是很大的數值,基本是全表掃描了。  當正常的用字符串查詢字符串就很正常了,索引沒問題,rows的值為1,這里說的是掃描聚簇索引的rows,而不是索引二級索引。

那么為什么會出現這問題?

下面是mysql官方給出的說法, 最后一條很重要,當在其他情況下,兩個參數都會統一成 float 來比較。 居然新版的mysql在優化器層面已經做了一些調整規避這問題,但我自己的測試版本是mysql 5.6,阿里云用的也是5.7,都沒有解決該問題。 看來是更高版本解決吧,這個待驗證。

看完了官方解說,我們知道上面那一句慢查詢sql,其實就相當于 where to_int(taskid) = 516006380 。當然直接用to_int是顯示轉換了,但是對比出來的效果是一致的。  不管是隱式轉換,還是顯示轉換,速度能起來才怪。。。 因為mysql不支持函數索引。

# xiaorui.cc
 
If both arguments in a comparison operation are strings, they are compared as strings.
If both arguments are integers, they are compared as integers.
Hexadecimal values are treated as binary strings if not compared to a number.
If one of the arguments is a TIMESTAMP or DATETIME column and the other argument is a constant, the constant is converted to a timestamp before the comparison is performed. This is done to be more ODBC-friendly. Note that this is not done for the arguments to IN()! To be safe, always use complete datetime, date, or time strings when doing comparisons. For example, to achieve best results when using BETWEEN with date or time values, use CAST() to explicitly convert the values to the desired data type.
If one of the arguments is a decimal value, comparison depends on the other argument. The arguments are compared as decimal values if the other argument is a decimal or integer value, or as floating-point values if the other argument is a floating-point value.
In all other cases, the arguments are compared as floating-point (real) numbers.

翻譯為中文就是:

  • 兩個參數至少有一個是 NULL 時,比較的結果也是 NULL,例外是使用 <=> 對兩個 NULL 做比較時會返回 1,這兩種情況都不需要做類型轉換
  • 兩個參數都是字符串,會按照字符串來比較,不做類型轉換
  • 兩個參數都是整數,按照整數來比較,不做類型轉換
  • 十六進制的值和非數字做比較時,會被當做二進制串
  • 有一個參數是 TIMESTAMP 或 DATETIME,并且另外一個參數是常量,常量會被轉換為 timestamp
  • 有一個參數是 decimal 類型,如果另外一個參數是 decimal 或者整數,會將整數轉換為 decimal 后進行比較,如果另外一個參數是浮點數,則會把 decimal 轉換為浮點數進行比較
  • 所有其他情況下,兩個參數都會被轉換為浮點數再進行比較

總結

sql查詢的時候,字段的類型要保持一致,不然會數據字段的隱式轉換,繼而出現慢查詢。 還是那句廢話,多看mysql的慢查詢日志,有你想要的.

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品www久久久久久广东| 成人欧美一区二区三区黑人孕妇| 欧美一区二区大胆人体摄影专业网站| 国产精品视频永久免费播放| 亚洲毛茸茸少妇高潮呻吟| 欧美激情在线一区| 欧美黑人极品猛少妇色xxxxx| 亚洲亚裔videos黑人hd| 2019av中文字幕| 久久国产精品99国产精| 成人a在线观看| 色中色综合影院手机版在线观看| 日韩欧美在线播放| 亚洲自拍另类欧美丝袜| 精品国产电影一区| 国产精自产拍久久久久久| 国产精品免费观看在线| 91久久国产婷婷一区二区| 色婷婷av一区二区三区久久| 国产精品爽爽爽爽爽爽在线观看| 亚洲一级黄色片| 国产精品扒开腿做爽爽爽视频| 色婷婷综合成人| 亚洲女性裸体视频| 欧美日韩免费在线观看| 亚洲成人动漫在线播放| 欧美日韩aaaa| 中文字幕日韩欧美在线视频| 中文字幕欧美国内| 亚洲一区制服诱惑| 日韩有码在线电影| 久久人91精品久久久久久不卡| 亚洲精品wwww| 亚洲成人网在线观看| 日韩最新免费不卡| 少妇高潮 亚洲精品| 亚洲一区二区少妇| 亚洲第一男人天堂| 久久久999精品| 国产成人啪精品视频免费网| 国产精品久久久久久久av大片| 国内精品在线一区| 懂色av影视一区二区三区| 亚洲成人黄色在线| 国产视频久久久| 久久久久久69| 亚洲免费高清视频| 久久免费在线观看| 国产精品入口日韩视频大尺度| 5278欧美一区二区三区| 色噜噜狠狠色综合网图区| 久久成年人视频| 77777亚洲午夜久久多人| 97视频色精品| 中文字幕日韩欧美| 日韩专区中文字幕| 97精品在线观看| 欧美电影在线观看| 久久免费观看视频| 欧美综合激情网| 国产精品国产福利国产秒拍| 欧美激情女人20p| 日韩电影中文字幕在线| 欧美电影在线播放| 久久成人免费视频| 欧美老女人www| 日韩欧美中文在线| 91久久久久久久久久久| 欧美日本啪啪无遮挡网站| 国产欧美日韩亚洲精品| 萌白酱国产一区二区| 国产精品国语对白| 性欧美亚洲xxxx乳在线观看| 国色天香2019中文字幕在线观看| 精品视频在线播放| 91久久精品日日躁夜夜躁国产| 97av在线视频| 青青在线视频一区二区三区| www.欧美精品一二三区| www.午夜精品| 国产精品毛片a∨一区二区三区|国| 国产成人精品在线| 日韩中文字幕在线看| 国产香蕉一区二区三区在线视频| 国产综合香蕉五月婷在线| 亚洲一区二区自拍| 欧美激情亚洲精品| 清纯唯美亚洲综合| 性色av一区二区三区在线观看| 久久久精品国产| 欧美精品videofree1080p| 欧美国产日韩精品| 亚洲国产精品va在线| 91香蕉亚洲精品| 亚洲精品一区中文字幕乱码| 国产丝袜一区二区| 欧美中文在线免费| 色香阁99久久精品久久久| 欧美极品欧美精品欧美视频| 欧美巨猛xxxx猛交黑人97人| 日韩成人av在线| 国产精品久久av| 中文字幕在线看视频国产欧美| 中文字幕视频在线免费欧美日韩综合在线看| 日本亚洲精品在线观看| 亚洲xxxx3d| 欧美最顶级的aⅴ艳星| 亚洲xxx大片| 国产女同一区二区| 热久久免费视频精品| 日韩精品极品视频| 欧美色视频日本版| 国产精品海角社区在线观看| 色偷偷噜噜噜亚洲男人的天堂| 亚洲国产小视频在线观看| 成人激情春色网| 日本精品在线视频| 亚洲国产日韩欧美在线动漫| 欧美激情手机在线视频| 久久久久久久久国产精品| 91在线观看免费| 久久亚洲精品一区| 国产日韩欧美影视| 色综合久久88色综合天天看泰| 成人a视频在线观看| 成人欧美在线观看| 亚洲电影免费观看高清完整版在线观看| 日韩av在线看| 亚洲精品久久久一区二区三区| 国产欧美日韩视频| 性色av一区二区三区| 亚洲欧美日韩天堂一区二区| 国产盗摄xxxx视频xxx69| 亚洲成人动漫在线播放| 日韩欧美精品免费在线| 日韩中文字幕不卡视频| 欧美激情精品久久久久久久变态| 91av视频在线免费观看| 日韩美女视频免费在线观看| 国产精品美女久久| 一区二区三欧美| 日韩亚洲国产中文字幕| 好吊成人免视频| 欧美日韩中文字幕在线视频| 欧美老女人性生活| 俺去亚洲欧洲欧美日韩| 国产视频综合在线| 在线播放国产一区中文字幕剧情欧美| 国产一区二区三区免费视频| 在线一区二区日韩| 亚洲黄一区二区| 国产不卡精品视男人的天堂| 亚洲成人精品久久久| 国产亚洲福利一区| 成人久久久久爱| 久久久精品国产网站| 国a精品视频大全| 国产免费久久av| 国产亚洲人成网站在线观看| 成人免费网站在线看| 中文字幕精品一区二区精品| 色综合久久88| 国产精品毛片a∨一区二区三区|国| 亚洲精品永久免费精品|