国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL的id關聯(lián)和索引使用的實際優(yōu)化案例

2024-07-24 12:46:12
字體:
來源:轉載
供稿:網(wǎng)友

昨晚收到客服MM電話,一用戶反饋數(shù)據(jù)庫響應非常慢,手機收到load異常報警,登上主機后發(fā)現(xiàn)大量sql執(zhí)行非常慢,有的執(zhí)行時間超過了10s
優(yōu)化點一:

SELECT * FROM `sitevipdb`.`game_shares_buy_list` WHERE price>='2.00′ ORDER BY tran_id DESC LIMIT 10;

表結構為:

CREATE TABLE `game_shares_buy_list` (`tran_id` int(10) unsigned NOT NULL AUTO_INCREMENT,`………..'PRIMARY KEY (`tran_id`),KEY `ind_username` (`username`)) ENGINE=InnoDB AUTO_INCREMENT=3144200 DEFAULT CHARSET=utf8;

執(zhí)行計劃:

root@127.0.0.1 : sitevipdb 09:10:22> explain SELECT * FROM `sitevipdb`.`game_shares_buy_list` WHERE price>='2.00′ ORDER BY tran_id DESC LIMIT 10;+—-+————-+———————-+——-+—————+———+———+——+——+————-+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+—-+————-+———————-+——-+—————+———+———+——+——+————-+| 1 | SIMPLE | game_shares_buy_list | index | NULL | PRIMARY | 4 | NULL | 10 | Using where |+—-+————-+———————-+——-+—————+———+———+——+——+————-+1 row in set (0.00 sec)

分析該sql的執(zhí)行計劃,由于tran_id是表的主鍵,所以查詢根據(jù)主鍵降序順序掃描,這樣就可以不用排序,
然后在過濾條件price>2.00的記錄,看上去這個執(zhí)行計劃貌似非常好,如果查詢掃描到了滿足條件的10條記錄,就會停止掃描;
但是這里有個問題,如果表中有大量的記錄是不符合2.00的,意味查詢就需要掃描非常多的記錄,才能找到符合條件的10條:

root@127.0.0.1 : sitevipdb 09:17:23> select price,count(*) as cnt from `game_shares_buy_list` group by price order by cnt desc limit 10;+——-+——-+| price | cnt |+——-+——-+| 1.75 | 39101 || 1.68 | 38477 || 1.71 | 34869 || 1.66 | 34849 || 1.72 | 34718 || 1.70 | 33996 || 1.76 | 32527 || 1.69 | 27189 || 1.61 | 25694 || 1.25 | 25450 |

可以看到表中有大量的記錄不是2.00的,所以這個時候不能在根據(jù)主鍵順序掃描,在過濾記錄;
那么是否需要在price建立一個索引:

root@127.0.0.1 : sitevipdb 09:09:01> select count(*) from `game_shares_buy_list` where price>'2′;+———-+| count(*) |+———-+| 4087 |+———-+root@127.0.0.1 : sitevipdb 09:17:31> select count(*) from `game_shares_buy_list` ;+———-+| count(*) |+———-+| 1572100 |

從上面price的數(shù)據(jù)分布可以看出,price的分布相對還是比較集中的,如果在price建立索引,mysql也有可能認為由于需要回表的記錄過多,
同時需要額外的排序,而不選擇在price上的索引:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 个旧市| 阿合奇县| 城市| 宿松县| 洛扎县| 句容市| 泾阳县| 兴安县| 琼中| 临桂县| 滕州市| 即墨市| 鹰潭市| 白水县| 罗田县| 沅陵县| 金乡县| 沙洋县| 应城市| 阿图什市| 西平县| 皋兰县| 涿州市| 重庆市| 辽阳县| 临沧市| 闽侯县| 温州市| 莒南县| 永嘉县| 临西县| 海林市| 新津县| 大竹县| 龙川县| 襄垣县| 永修县| 濮阳市| 资中县| 茂名市| 晋江市|