<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Linux數(shù)據(jù)庫MySQL內(nèi)部臨時表策略

    時間:2024-10-11 19:51:58 Linux認(rèn)證 我要投稿
    • 相關(guān)推薦

    Linux數(shù)據(jù)庫MySQL內(nèi)部臨時表策略

      MySQL內(nèi)部臨時表的使用有一定的策略,從源碼中關(guān)于SQL查詢是否需要內(nèi)部臨時表。可以總結(jié)如下:

      1、DISTINCT查詢,但是簡單的DISTINCT查詢,比如對primary key、unique key等DISTINCT查詢時,查詢優(yōu)化器會將DISTINCT條件優(yōu)化,去除DISTINCT條件,也不會創(chuàng)建臨時表;

      2、不是第一個表的字段使用ORDER BY 或者GROUP BY;

      3、ORDER BY和GROUP BY使用不同的順序;

      4、用戶需要緩存結(jié)果;

      5、ROLLUP查詢。

      源碼如下所示

      代碼地址:sql_select.cc:854, 函數(shù):JOIN::optimize(),位置:sql_select.cc:1399

      /*

      Check if we need to create a temporary table.

      This has to be done if all tables are not already read (const tables)

      and one of the following conditions holds:

      - We are using DISTINCT (simple distincts are already optimized away)

      - We are using an ORDER BY or GROUP BY on fields not in the first table

      - We are using different ORDER BY and GROUP BY orders

      - The user wants us to buffer the result.

      When the WITH ROLLUP modifier is present, we cannot skip temporary table

      creation for the DISTINCT clause just because there are only const tables.

      */

      need_tmp= (( const_tables != tables &&

      (( select_distinct || !simple_order || !simple_group) ||

      ( group_list && order ) ||

      test(select_options & OPTION_BUFFER_RESULT))) ||

      ( rollup.state != ROLLUP:: STATE_NONE && select_distinct ));

      內(nèi)部臨時表使用原則

      但是使用了內(nèi)部臨時表,那么他是怎么存儲的呢?原則是這樣的:

      1、當(dāng)查詢結(jié)果較小的情況下,使用heap存儲引擎進行存儲。也就是說在內(nèi)存中存儲查詢結(jié)果。

      2、當(dāng)查詢結(jié)果較大的情況下,使用myisam存儲引擎進行存儲。

      3、當(dāng)查詢結(jié)果最初較小,但是不斷增大的情況下,將會有從heap存儲引擎轉(zhuǎn)化為myisam存儲引擎存儲查詢結(jié)果。

      什么情況算是查詢結(jié)果較小呢?從源碼中if的幾個參數(shù)可以看出:

      1、有blob字段的情況;

      2、使用唯一限制的情況;

      3、當(dāng)前表定義為大表的情況;

      4、查詢結(jié)果的選項為小結(jié)果集的情況;

      5、查詢結(jié)果的選項為強制使用myisam的情況。

    【Linux數(shù)據(jù)庫MySQL內(nèi)部臨時表策略】相關(guān)文章:

    2016年Linux認(rèn)證基礎(chǔ)知識:mysql數(shù)據(jù)庫的全量備份08-25

    Oracle數(shù)據(jù)庫臨時表管理技巧06-15

    jboss配置mysql數(shù)據(jù)庫連接池09-02

    酒店內(nèi)部營銷管理策略10-29

    2017年計算機二級mysql數(shù)據(jù)庫模擬試題06-25

    數(shù)據(jù)庫系統(tǒng)的內(nèi)部結(jié)構(gòu)體系簡介10-21

    企業(yè)內(nèi)部物流管理策略10-21

    mysql SQL語句積累參考10-02

    PHP常用MySql操作介紹05-11

    Linux認(rèn)證概念10-29

    主站蜘蛛池模板: 乱精品一区字幕二区| 日韩精品无码久久一区二区三| 87国产私拍福利精品视频| 最新国产精品精品视频| 91精品国产自产在线老师啪| 精品无人码麻豆乱码1区2区| 精品无码三级在线观看视频| 国产精品视频免费| 亚洲国产精品无码专区影院| 精品亚洲成α人无码成α在线观看| 久久91精品久久91综合| 久久亚洲精品成人AV| 日韩AV毛片精品久久久| 国产av无码专区亚洲国产精品| 国产精品99精品无码视亚| 亚洲精品美女久久久久99| 久久99精品久久久久久野外| 中文精品一卡2卡3卡4卡| 99在线精品免费视频九九视| 亚洲精品高清国产一线久久| 久久亚洲精品无码播放| 国产精品色视频ⅹxxx | 99久久99久久久精品齐齐| 中文字幕精品无码一区二区| 精品国产热久久久福利| 国产99久久久国产精品~~牛 | 麻豆精品不卡国产免费看| 精品爆乳一区二区三区无码av| 真实国产乱子伦精品视频| 少妇亚洲免费精品| 久久精品亚洲男人的天堂| 国产精品主播一区二区| 国产精品videossex白浆| 88久久精品无码一区二区毛片| 国产精品专区第二| 国产精品分类视频分类一区| 国产精品拍天天在线| 国语自产精品视频在线区| 日韩精品内射视频免费观看| 十八18禁国产精品www| 亚洲精品国产精品乱码不卡√ |