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

首頁 > 數據庫 > MySQL > 正文

mysql中索引與FROM_UNIXTIME的問題

2024-07-24 13:13:27
字體:
來源:轉載
供稿:網友

零、背景

這周四收到很多告警,找DBA看了看,發現有個慢查詢。

簡單收集一些信息后,發現這個慢查詢問題隱藏的很深,問了好多人包括DBA都不知道原因。

一、問題

有一個DB, 有一個字段, 定義如下.

MySQL [d_union_stat]> desc t_local_cache_log_meta;+----------------+--------------+------+-----+---------------------+| Field     | Type     | Null | Key | Default       |+----------------+--------------+------+-----+---------------------+| c_id      | int(11)   | NO  | PRI | NULL        || c_key     | varchar(128) | NO  | MUL |           || c_time     | int(11)   | NO  | MUL | 0          || c_mtime    | varchar(45) | NO  | MUL | 0000-00-00 00:00:00 |+----------------+--------------+------+-----+---------------------+17 rows in set (0.01 sec)

索引如下:

MySQL [d_union_stat]> show index from t_local_cache_log_meta /G     *************************** 1. row ***************************    Table: t_local_cache_log_meta  Non_unique: 0   Key_name: PRIMARY Column_name: c_id  Collation: A Cardinality: 6517096  Index_type: BTREE*************************** 2. row ***************************...*************************** 6. row ***************************    Table: t_local_cache_log_meta  Non_unique: 1   Key_name: index_mtime Column_name: c_mtime  Collation: A Cardinality: 592463  Index_type: BTREE6 rows in set (0.02 sec)

然后我寫了一個SQL如下:

SELECT   count(*)FROM  d_union_stat.t_local_cache_log_metawhere  `c_mtime` < FROM_UNIXTIME(1494485402);

終于有一天DBA過來了, 扔給我一個流水,說這個SQL是慢SQL。

# Time: 170518 11:31:14# Query_time: 12.312329 Lock_time: 0.000061 Rows_sent: 0 Rows_examined: 5809647SET timestamp=1495078274;DELETE FROM `t_local_cache_log_meta` WHERE `c_mtime`< FROM_UNIXTIME(1494473461) limit 1000;

我頓時無語了,我的DB都是加了索引,SQL都是精心優化了的,怎么是慢SQL呢?

問為什么是慢SQL,DBA答不上來, 問了周圍的同事也都答不上來。

我心里暗想遇到一個隱藏很深的知識點了。

令人懷疑的地方有兩個:1.有6個索引。 2. 右值是 FROM_UNIXTIME 函數。

于是查詢MYSQL官方文檔,發現6個不是問題。

All storage engines support at least 16 indexes per table and a total index length of at least 256 bytes.  
Most storage engines have higher limits.

于是懷疑問題是 FROM_UNIXTIME 函數了。

然后看看MYSQL的INDEX小節,找到一點蛛絲馬跡。

1.To find the rows matching a WHERE clause quickly.
2. To eliminate rows from consideration.
 If there is a choice between multiple indexes, MySQL normally uses the index that finds the smallest number of rows.
3.If the table has a multiple-column index, any leftmost prefix of the index can be used by the optimizer to look up rows.
4. MySQL can use indexes on columns more efficiently if they are declared as the same type and size.
 Comparison of dissimilar columns (comparing a string column to a temporal or numeric column, for example) may prevent use of indexes if values cannot be compared directly without conversion.

看到第4條的時候,提到不同類型可能導致不走索引,難道 FROM_UNIXTIME 的返回值不能轉化為字符串類型?

于是查詢 FROM_UNIXTIME 函數的返回值。

MySQL FROM_UNIXTIME() returns a date /datetime from a version of unix_timestamp.

返回的是一個時間類型,那強制轉化為字符串類型呢?

MySQL [d_union_stat]> explain SELECT   ->   *  -> FROM  ->   t_local_cache_log_meta  -> where  ->   `c_mtime` = CONCAT(FROM_UNIXTIME(1494485402)) /G*************************** 1. row ***************************      id: 1 select_type: SIMPLE    table: t_local_cache_log_meta     type: refpossible_keys: index_mtime     key: index_mtime   key_len: 137     ref: const     rows: 1    Extra: Using where1 row in set (0.01 sec)

這次可以看到, 使用了索引,只掃描了一個數據。

二、結論

這次對 FROM_UNIXTIME 的返回值強制轉化一下就可以利用上索引了。

所以這個SQL不能利用上索引是右值與左值的類型不一致導致的。 。

好了,不多說了, 這篇文章算是一個插曲,后面繼續介紹算法吧。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产天堂网精品网站| 日韩中文字幕精品视频| 91丝袜美腿美女视频网站| 色小说视频一区| 在线中文字幕日韩| 亚洲国产成人在线播放| 亚洲成人国产精品| 中文字幕在线观看亚洲| 亚洲黄一区二区| 亚洲国产一区二区三区在线观看| 日韩av在线高清| 欧美成人激情在线| 欧美黑人巨大精品一区二区| 91在线观看欧美日韩| 正在播放国产一区| 在线亚洲国产精品网| 91精品久久久久久久久久入口| 日本不卡高字幕在线2019| 日韩少妇与小伙激情| 97视频在线观看视频免费视频| 欧美激情伊人电影| 日韩欧美成人精品| 国产精品免费久久久| 欧美疯狂xxxx大交乱88av| 韩国美女主播一区| 亚洲最大的成人网| 青青久久av北条麻妃海外网| 久久久久久午夜| 精品二区三区线观看| 国产精品一区二区性色av| 欧美精品福利在线| 亚洲精品之草原avav久久| 久久久精品在线| 欧美尺度大的性做爰视频| 国产在线视频一区| 91精品在线国产| 亚洲成人精品久久| 国产精品国产三级国产aⅴ9色| 国产成人一区二区三区电影| 久久久国产视频91| 成人妇女淫片aaaa视频| 精品久久久在线观看| 欧美极品少妇xxxxⅹ喷水| 国产精品吊钟奶在线| 国产精品永久免费| 九九视频这里只有精品| 国产剧情日韩欧美| 久久99久国产精品黄毛片入口| 国产精品青青在线观看爽香蕉| 91精品国产综合久久香蕉| 亚洲a成v人在线观看| 成人h猎奇视频网站| 国产成人精品日本亚洲专区61| 亚洲影院色在线观看免费| 亚洲www视频| 欧美激情综合色综合啪啪五月| 欧美视频一区二区三区…| 一区二区三区日韩在线| 亚洲最大的av网站| 136fldh精品导航福利| 欧美亚洲在线观看| 亚洲欧美国产一区二区三区| 久久99视频免费| 欧美福利视频网站| 亚洲福利在线视频| 国产日本欧美一区| 亚洲精品一区二区久| 国产精品美女在线观看| 国产精选久久久久久| 国产日韩欧美影视| 欧美xxxx18国产| 国产91精品久久久久久| 欧美亚洲在线视频| 欧美日韩福利电影| 亚洲免费精彩视频| 亚洲第一区第一页| 国产欧美日韩高清| 欧美日韩一区二区三区在线免费观看| 亚洲欧洲中文天堂| 日韩大陆毛片av| 久久成人国产精品| 亚洲视屏在线播放| 日韩中文字在线| 亚洲国产精品va在线观看黑人| 亚洲精品国产美女| 国产一区二区三区18| 成人午夜在线观看| 国产日韩欧美自拍| 91九色综合久久| 在线成人激情黄色| 97超级碰碰碰久久久| 日韩在线观看你懂的| 亚洲福利视频网站| 国产精品一区=区| 日韩电影在线观看永久视频免费网站| 亚洲精品动漫久久久久| 中文字幕最新精品| 国产在线视频一区| 欧美另类精品xxxx孕妇| 欧美日韩午夜视频在线观看| 国产综合在线看| 亚洲性线免费观看视频成熟| www.欧美三级电影.com| 国产中文字幕91| 久久久亚洲精品视频| 日韩欧美精品免费在线| 亚洲美女av网站| 97久久伊人激情网| 久久久av网站| 精品国产一区二区三区久久狼5月| 日韩av在线免费观看| 亚洲一区999| 8090理伦午夜在线电影| 亚州成人av在线| 亚洲天堂网站在线观看视频| 在线观看欧美www| 成人午夜黄色影院| 亚洲国产一区自拍| 人九九综合九九宗合| 亚洲综合小说区| 亚洲加勒比久久88色综合| 色综合视频网站| 国产精品久久久久久搜索| 福利微拍一区二区| 久久国产精品影片| 2019国产精品自在线拍国产不卡| 精品亚洲夜色av98在线观看| 国产一区二区视频在线观看| 欧美日韩免费在线观看| 亚洲精品久久久久久下一站| 在线看日韩av| 亚洲午夜小视频| www.久久撸.com| 国产又爽又黄的激情精品视频| 国产精品69久久久久| 亚洲男人第一网站| 懂色av影视一区二区三区| 亚洲新声在线观看| 九九久久久久久久久激情| 亚洲国产欧美一区| 中文一区二区视频| 日韩欧美999| 色多多国产成人永久免费网站| 日韩视频在线观看免费| 97色在线播放视频| 欧美富婆性猛交| 成人久久一区二区三区| 亚洲成人av资源网| 国产欧美日韩综合精品| 日韩精品黄色网| 欧美精品免费看| 在线视频欧美日韩精品| 久久久久久免费精品| 日韩影视在线观看| 久热精品视频在线| 亲子乱一区二区三区电影| 成人在线一区二区| 亚洲精品美女在线观看播放| 亚洲精品国产精品自产a区红杏吧| 日韩在线视频中文字幕| 国产欧美精品一区二区| 欧美视频第一页| 国产精品久久一| 久久亚洲精品中文字幕冲田杏梨|