最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用use index優(yōu)化sql查詢(xún)的詳細(xì)介紹

 更新時(shí)間:2013年06月11日 17:11:14   作者:  
本篇文章是對(duì)使用use index優(yōu)化sql查詢(xún)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

先看一下arena_match_index的表結(jié)構(gòu),大家注意表的索引結(jié)構(gòu)

復(fù)制代碼 代碼如下:

CREATE TABLE `arena_match_index` (
  `tid` int(10) unsigned NOT NULL DEFAULT '0',
  `mid` int(10) unsigned NOT NULL DEFAULT '0',
  `group` int(10) unsigned NOT NULL DEFAULT '0',
  `round` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `day` date NOT NULL DEFAULT '0000-00-00',
  `begintime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  UNIQUE KEY `tm` (`tid`,`mid`),
  KEY `mid` (`mid`),
  KEY `begintime` (`begintime`),
  KEY `dg` (`day`,`group`),
  KEY `td` (`tid`,`day`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

接著看下面的sql:
復(fù)制代碼 代碼如下:

SELECT round  FROM arena_match_index WHERE `day` = '2010-12-31' AND `group` = 18 AND `begintime` < '2010-12-31 12:14:28' order by begintime LIMIT 1;

這條sql的查詢(xún)條件顯示可能使用的索引有`begintime`和`dg`,但是由于使用了order by begintime排序mysql最后選擇使用`begintime`索引,explain的結(jié)果為:
復(fù)制代碼 代碼如下:

mysql> explain SELECT round  FROM arena_match_index  WHERE `day` = '2010-12-31' AND `group` = 18 AND `begintime` < '2010-12-31 12:14:28' order by begintime LIMIT 1;
+----+-------------+-------------------+-------+---------------+-----------+---------+------+--------+-------------+
| id | select_type | table             | type  | possible_keys | key       | key_len | ref  | rows   | Extra       |
+----+-------------+-------------------+-------+---------------+-----------+---------+------+--------+-------------+
|  1 | SIMPLE      | arena_match_index | range | begintime,dg  |<STRONG> </STRONG>begintime<STRONG> </STRONG>| 8       | NULL | 226480 | Using where |
+----+-------------+-------------------+-------+---------------+-----------+---------+------+--------+-------------+

explain的結(jié)果顯示使用`begintime`索引要掃描22w條記錄,這樣的查詢(xún)性能是非常糟糕的,實(shí)際的執(zhí)行情況也是初次執(zhí)行(還未有緩存數(shù)據(jù)時(shí))時(shí)需要30秒以上的時(shí)間。

實(shí)際上這個(gè)查詢(xún)使用`dg`聯(lián)合索引的性能更好,因?yàn)橥惶焱粋€(gè)小組內(nèi)也就幾十場(chǎng)比賽,因此應(yīng)該優(yōu)先使用`dg`索引定位到匹配的數(shù)據(jù)集合再進(jìn)行排序,那么如何告訴mysql使用指定索引呢?使用use index語(yǔ)句:

復(fù)制代碼 代碼如下:

mysql> explain SELECT round  FROM arena_match_index use index (dg) WHERE `day` = '2010-12-31' AND `group` = 18 AND `begintime` < '2010-12-31 12:14:28' order by begintime LIMIT 1;
+----+-------------+-------------------+------+---------------+------+---------+-------------+------+-----------------------------+
| id | select_type | table             | type | possible_keys | key  | key_len | ref         | rows | Extra                       |
+----+-------------+-------------------+------+---------------+------+---------+-------------+------+-----------------------------+
|  1 | SIMPLE      | arena_match_index | ref  | dg            | dg   | 7       | const,const |  757 | Using where; Using filesort |
+----+-------------+-------------------+------+---------------+------+---------+-------------+------+-----------------------------+

explain結(jié)果顯示使用`dg`聯(lián)合索引只需要掃描757條數(shù)據(jù),性能直接提升了上百倍,實(shí)際的執(zhí)行情況也是幾乎立即就返回了查詢(xún)結(jié)果。

在最初的查詢(xún)語(yǔ)句中只要把order by begintime去掉,mysql就會(huì)使用`dg`索引了,再次印證了order by會(huì)影響mysql的索引選擇策略!

復(fù)制代碼 代碼如下:

mysql> explain SELECT round  FROM arena_match_index  WHERE `day` = '2010-12-31' AND `group` = 18 AND `begintime` < '2010-12-31 12:14:28'  LIMIT 1;
+----+-------------+-------------------+------+---------------+------+---------+-------------+------+-------------+
| id | select_type | table             | type | possible_keys | key  | key_len | ref         | rows | Extra       |
+----+-------------+-------------------+------+---------------+------+---------+-------------+------+-------------+
|  1 | SIMPLE      | arena_match_index | ref  | begintime,dg  | dg   | 7       | const,const |  717 | Using where |
+----+-------------+-------------------+------+---------------+------+---------+-------------+------+-------------+

通過(guò)上面的例子說(shuō)mysql有時(shí)候也并不聰明,并非總能做出最優(yōu)選擇,還是需要我們開(kāi)發(fā)者對(duì)它進(jìn)行“調(diào)教”!

相關(guān)文章

  • mysql如何將id重新修改為遞增

    mysql如何將id重新修改為遞增

    這篇文章主要介紹了mysql如何將id重新修改為遞增,本文模擬場(chǎng)景結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Windows?本地安裝?Mysql8.0圖文教程

    Windows?本地安裝?Mysql8.0圖文教程

    本文介紹了如何在Windows本地安裝Mysql8.0。從下載Mysql8.0安裝包,運(yùn)行安裝程序,配置初始設(shè)置到啟動(dòng)Mysql服務(wù)等詳細(xì)步驟進(jìn)行了講解。
    2023-04-04
  • MySQL中的空格處理方法

    MySQL中的空格處理方法

    在MySQL中,空格是一個(gè)特殊的字符,本文主要介紹了MySQL中的空格處理方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • MYSQL加密和壓縮函數(shù)詳解以及實(shí)戰(zhàn)(附示例)

    MYSQL加密和壓縮函數(shù)詳解以及實(shí)戰(zhàn)(附示例)

    這篇文章主要給大家介紹了關(guān)于MYSQL加密和壓縮函數(shù)詳解以及實(shí)戰(zhàn)的相關(guān)資料,加密函數(shù)主要用來(lái)對(duì)數(shù)據(jù)進(jìn)行加密和界面處理,以保證某些重要數(shù)據(jù)不被別人獲取,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • mysql 8.0.17 安裝配置圖文教程

    mysql 8.0.17 安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.17 安裝配置圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 深入解析mysql中order by與group by的順序問(wèn)題

    深入解析mysql中order by與group by的順序問(wèn)題

    本篇文章是對(duì)mysql中order by與group by的順序問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL與PHP的基礎(chǔ)與應(yīng)用專(zhuān)題之內(nèi)置函數(shù)

    MySQL與PHP的基礎(chǔ)與應(yīng)用專(zhuān)題之內(nèi)置函數(shù)

    MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,本系列將帶你掌握php與mysql的基礎(chǔ)應(yīng)用,本篇MySQL的內(nèi)置函數(shù)開(kāi)始
    2022-02-02
  • MySQL查詢(xún)指定字段不是數(shù)字與逗號(hào)的sql

    MySQL查詢(xún)指定字段不是數(shù)字與逗號(hào)的sql

    今天小編遇到一個(gè)問(wèn)題因?yàn)榫庉嫷牟患?xì)心不小心將關(guān)鍵詞寫(xiě)到相關(guān)文章里面導(dǎo)致頁(yè)面無(wú)法生成,這里用sql語(yǔ)言將這些內(nèi)容獲取出來(lái)
    2020-02-02
  • MySQL外鍵設(shè)置的方法實(shí)例

    MySQL外鍵設(shè)置的方法實(shí)例

    這篇文章主要介紹了MySQL外鍵設(shè)置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • MySQL筆記之索引的使用

    MySQL筆記之索引的使用

    索引是創(chuàng)建在表上的,對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)其作用主要在于提高查詢(xún)的速度,降低數(shù)據(jù)庫(kù)系統(tǒng)的性能開(kāi)銷(xiāo)
    2013-05-05

最新評(píng)論

玉林市| 弋阳县| 临泽县| 永城市| 锡林浩特市| 罗平县| 星子县| 贡山| 宜丰县| 蓬莱市| 望都县| 漯河市| 都江堰市| 沈丘县| 保康县| 玛纳斯县| 大埔县| 习水县| 宝鸡市| 禄劝| 濉溪县| 德州市| 微山县| 平阴县| 龙岩市| 中牟县| 阿拉善右旗| 邳州市| 朝阳区| 桐柏县| 抚宁县| 永川市| 秭归县| 方山县| 衡南县| 都兰县| 辽宁省| 成都市| 石嘴山市| 梁平县| 略阳县|