亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? perform.sgml

?? PostgreSQL7.4.6 for Linux
?? SGML
?? 第 1 頁 / 共 3 頁
字號:
    also <xref linkend="explicit-joins">.)<programlisting>SET enable_nestloop = off;EXPLAIN SELECT * FROM tenk1 t1, tenk2 t2 WHERE t1.unique1 &lt; 50 AND t1.unique2 = t2.unique2;                               QUERY PLAN-------------------------------------------------------------------------- Hash Join  (cost=179.45..563.06 rows=49 width=296)   Hash Cond: ("outer".unique2 = "inner".unique2)   -&gt;  Seq Scan on tenk2 t2  (cost=0.00..333.00 rows=10000 width=148)   -&gt;  Hash  (cost=179.33..179.33 rows=49 width=148)         -&gt;  Index Scan using tenk1_unique1 on tenk1 t1                                    (cost=0.00..179.33 rows=49 width=148)               Index Cond: (unique1 &lt; 50)</programlisting>    This plan proposes to extract the 50 interesting rows of <classname>tenk1</classname>    using ye same olde index scan, stash them into an in-memory hash table,    and then do a sequential scan of <classname>tenk2</classname>, probing into the hash table    for possible matches of <literal>t1.unique2 = t2.unique2</literal> at each <classname>tenk2</classname> row.    The cost to read <classname>tenk1</classname> and set up the hash table is entirely start-up    cost for the hash join, since we won't get any rows out until we can    start reading <classname>tenk2</classname>.  The total time estimate for the join also    includes a hefty charge for the CPU time to probe the hash table    10000 times.  Note, however, that we are <emphasis>not</emphasis> charging 10000 times 179.33;    the hash table setup is only done once in this plan type.   </para>   <para>    It is possible to check on the accuracy of the planner's estimated costs    by using <command>EXPLAIN ANALYZE</>.  This command actually executes the query,    and then displays the true run time accumulated within each plan node    along with the same estimated costs that a plain <command>EXPLAIN</command> shows.    For example, we might get a result like this:<screen>EXPLAIN ANALYZE SELECT * FROM tenk1 t1, tenk2 t2 WHERE t1.unique1 &lt; 50 AND t1.unique2 = t2.unique2;                                   QUERY PLAN------------------------------------------------------------------------------- Nested Loop  (cost=0.00..327.02 rows=49 width=296)                                 (actual time=1.181..29.822 rows=50 loops=1)   -&gt;  Index Scan using tenk1_unique1 on tenk1 t1                  (cost=0.00..179.33 rows=49 width=148)                                 (actual time=0.630..8.917 rows=50 loops=1)         Index Cond: (unique1 &lt; 50)   -&gt;  Index Scan using tenk2_unique2 on tenk2 t2                  (cost=0.00..3.01 rows=1 width=148)                                 (actual time=0.295..0.324 rows=1 loops=50)         Index Cond: ("outer".unique2 = t2.unique2) Total runtime: 31.604 ms</screen>    Note that the <quote>actual time</quote> values are in milliseconds of    real time, whereas the <quote>cost</quote> estimates are expressed in    arbitrary units of disk fetches; so they are unlikely to match up.    The thing to pay attention to is the ratios.   </para>   <para>    In some query plans, it is possible for a subplan node to be executed more    than once.  For example, the inner index scan is executed once per outer    row in the above nested-loop plan.  In such cases, the    <quote>loops</quote> value reports the    total number of executions of the node, and the actual time and rows    values shown are averages per-execution.  This is done to make the numbers    comparable with the way that the cost estimates are shown.  Multiply by    the <quote>loops</quote> value to get the total time actually spent in    the node.   </para>   <para>    The <literal>Total runtime</literal> shown by <command>EXPLAIN ANALYZE</command> includes    executor start-up and shut-down time, as well as time spent processing    the result rows.  It does not include parsing, rewriting, or planning    time.  For a <command>SELECT</> query, the total run time will normally be just a    little larger than the total time reported for the top-level plan node.    For <command>INSERT</>, <command>UPDATE</>, and <command>DELETE</> commands, the total run time may be    considerably larger, because it includes the time spent processing the    result rows.  In these commands, the time for the top plan node    essentially is the time spent computing the new rows and/or locating    the old ones, but it doesn't include the time spent making the changes.   </para>   <para>    It is worth noting that <command>EXPLAIN</> results should not be extrapolated    to situations other than the one you are actually testing; for example,    results on a toy-sized table can't be assumed to apply to large tables.    The planner's cost estimates are not linear and so it may well choose    a different plan for a larger or smaller table.  An extreme example    is that on a table that only occupies one disk page, you'll nearly    always get a sequential scan plan whether indexes are available or not.    The planner realizes that it's going to take one disk page read to    process the table in any case, so there's no value in expending additional    page reads to look at an index.   </para>  </sect1> <sect1 id="planner-stats">  <title>Statistics Used by the Planner</title>  <indexterm zone="planner-stats">   <primary>statistics</primary>   <secondary>of the planner</secondary>  </indexterm>  <para>   As we saw in the previous section, the query planner needs to estimate   the number of rows retrieved by a query in order to make good choices   of query plans.  This section provides a quick look at the statistics   that the system uses for these estimates.  </para>  <para>   One component of the statistics is the total number of entries in each   table and index, as well as the number of disk blocks occupied by each   table and index.  This information is kept in the table   <structname>pg_class</structname> in the columns <structfield>reltuples</structfield>   and <structfield>relpages</structfield>.  We can look at it   with queries similar to this one:<screen>SELECT relname, relkind, reltuples, relpages FROM pg_class WHERE relname LIKE 'tenk1%';    relname    | relkind | reltuples | relpages---------------+---------+-----------+---------- tenk1         | r       |     10000 |      233 tenk1_hundred | i       |     10000 |       30 tenk1_unique1 | i       |     10000 |       30 tenk1_unique2 | i       |     10000 |       30(4 rows)</screen>   Here we can see that <structname>tenk1</structname> contains 10000   rows, as do its indexes, but the indexes are (unsurprisingly) much   smaller than the table.  </para>  <para>   For efficiency reasons, <structfield>reltuples</structfield>    and <structfield>relpages</structfield> are not updated on-the-fly,   and so they usually contain only approximate values (which is good   enough for the planner's purposes).  They are initialized with dummy   values (presently 1000 and 10 respectively) when a table is created.   They are updated by certain commands, presently <command>VACUUM</>,   <command>ANALYZE</>, and <command>CREATE INDEX</>.  A stand-alone   <command>ANALYZE</>, that is one not part of <command>VACUUM</>,   generates an approximate <structfield>reltuples</structfield> value   since it does not read every row of the table.  </para>  <indexterm>   <primary>pg_statistic</primary>  </indexterm>  <para>   Most queries retrieve only a fraction of the rows in a table, due   to having <literal>WHERE</> clauses that restrict the rows to be examined.   The planner thus needs to make an estimate of the   <firstterm>selectivity</> of <literal>WHERE</> clauses, that is, the fraction of   rows that match each condition in the <literal>WHERE</> clause.  The information   used for this task is stored in the <structname>pg_statistic</structname>   system catalog.  Entries in <structname>pg_statistic</structname> are   updated by <command>ANALYZE</> and <command>VACUUM ANALYZE</> commands   and are always approximate even when freshly updated.  </para>  <indexterm>   <primary>pg_stats</primary>  </indexterm>  <para>   Rather than look at <structname>pg_statistic</structname> directly,   it's better to look at its view <structname>pg_stats</structname>   when examining the statistics manually.  <structname>pg_stats</structname>   is designed to be more easily readable.  Furthermore,   <structname>pg_stats</structname> is readable by all, whereas   <structname>pg_statistic</structname> is only readable by a superuser.   (This prevents unprivileged users from learning something about   the contents of other people's tables from the statistics.  The   <structname>pg_stats</structname> view is restricted to show only   rows about tables that the current user can read.)   For example, we might do:<screen>SELECT attname, n_distinct, most_common_vals FROM pg_stats WHERE tablename = 'road'; attname | n_distinct |                                                                                                                                                                                  most_common_vals                                                                                                                                                                                   ---------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- name    |  -0.467008 | {"I- 580                        Ramp","I- 880                        Ramp","Sp Railroad                       ","I- 580                            ","I- 680                        Ramp","I- 80                         Ramp","14th                          St  ","5th                           St  ","Mission                       Blvd","I- 880                            "} thepath |         20 | {"[(-122.089,37.71),(-122.0886,37.711)]"}(2 rows)</screen>  </para>  <para>   <structname>pg_stats</structname> is described in detail in   <xref linkend="view-pg-stats">.  </para>  <para>   The amount of information stored in <structname>pg_statistic</structname>,   in particular the maximum number of entries in the   <structfield>most_common_vals</> and <structfield>histogram_bounds</>   arrays for each column, can be set on a   column-by-column basis using the <command>ALTER TABLE SET STATISTICS</>   command, or globally by setting the   <varname>default_statistics_target</varname> runtime parameter.   The default limit is presently 10 entries.  Raising the limit   may allow more accurate planner estimates to be made, particularly for   columns with irregular data distributions, at the price of consuming   more space in <structname>pg_statistic</structname> and slightly more   time to compute the estimates.  Conversely, a lower limit may be   appropriate for columns with simple data distributions.  </para> </sect1> <sect1 id="explicit-joins">  <title>Controlling the Planner with Explicit <literal>JOIN</> Clauses</title>  <indexterm zone="explicit-joins">   <primary>join</primary>   <secondary>controlling the order</secondary>  </indexterm>  <para>   It is possible   to control the query planner to some extent by using the explicit <literal>JOIN</>   syntax.  To see why this matters, we first need some background.  </para>  <para>   In a simple join query, such as<programlisting>SELECT * FROM a, b, c WHERE a.id = b.id AND b.ref = c.id;</programlisting>   the planner is free to join the given tables in any order.  For   example, it could generate a query plan that joins A to B, using   the <literal>WHERE</> condition <literal>a.id = b.id</>, and then   joins C to this joined table, using the other <literal>WHERE</>   condition.  Or it could join B to C and then join A to that result.   Or it could join A to C and then join them with B, but that

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲男人的天堂在线观看| 精品日韩在线观看| 国产精品99久久久久| 视频一区二区国产| 日本美女一区二区三区视频| 亚洲一区二区三区精品在线| 亚洲综合999| 亚洲在线视频网站| 亚洲大片精品永久免费| 日韩在线卡一卡二| 日本亚洲免费观看| 激情文学综合插| 国内精品久久久久影院薰衣草| 美脚の诱脚舐め脚责91| 国产综合色视频| 国产91丝袜在线18| 97精品国产97久久久久久久久久久久| 成人av小说网| 91精品福利视频| 在线成人av网站| 2020国产精品| 国产精品少妇自拍| 一区二区三区精品久久久| 视频一区二区国产| 国产一区二区三区免费| 成人18视频在线播放| 91精品办公室少妇高潮对白| 欧美久久久久久久久中文字幕| 欧美一级一级性生活免费录像| 久久一二三国产| 一级特黄大欧美久久久| 日本aⅴ免费视频一区二区三区| 国内成人精品2018免费看| 成人激情免费电影网址| 欧美日韩在线亚洲一区蜜芽| 久久综合久久综合久久| 亚洲免费观看高清完整| 经典一区二区三区| 色综合久久精品| 精品国产一区二区精华| 亚洲美女偷拍久久| 国产真实乱对白精彩久久| 99精品国产视频| 日韩美女视频在线| 一个色在线综合| 国产99久久久精品| 精品视频色一区| 国产精品久久免费看| 日韩国产在线观看一区| 成人免费观看视频| 日韩欧美黄色影院| 国产精品国产三级国产有无不卡| 亚洲电影你懂得| 99久久精品费精品国产一区二区| 91精品国产综合久久福利软件| 国产精品欧美综合在线| 另类小说视频一区二区| 欧美亚洲国产一卡| 亚洲美女电影在线| 高清beeg欧美| 精品国产亚洲在线| 蜜臀va亚洲va欧美va天堂| 欧美在线视频你懂得| 国产精品色眯眯| 狠狠色2019综合网| 日韩天堂在线观看| 天天综合色天天综合色h| 色婷婷av一区| 亚洲欧美偷拍卡通变态| 不卡电影免费在线播放一区| 久久久精品人体av艺术| 奇米精品一区二区三区四区 | 亚洲一区二区三区国产| 成人一二三区视频| 欧美激情在线看| 国产91在线观看丝袜| 久久免费的精品国产v∧| 日本不卡不码高清免费观看| 欧美日韩在线综合| 免费观看久久久4p| 91精品国产色综合久久不卡蜜臀| 天天综合色天天综合色h| 欧美狂野另类xxxxoooo| 全部av―极品视觉盛宴亚洲| 555www色欧美视频| 久久se这里有精品| 欧美高清一级片在线观看| 国产精品88av| 国产精品系列在线| 99精品视频中文字幕| 亚洲综合在线第一页| 欧美亚洲禁片免费| 美腿丝袜亚洲色图| 国产欧美一区二区三区鸳鸯浴 | 亚洲妇女屁股眼交7| 欧美三级电影在线观看| 午夜精品福利一区二区蜜股av | 色综合视频在线观看| 一区二区在线免费观看| 欧美日韩成人高清| 另类小说欧美激情| 国产女人18水真多18精品一级做| 成人精品gif动图一区| 亚洲午夜精品久久久久久久久| 91精品国产综合久久精品性色| 老司机精品视频导航| 国产蜜臀97一区二区三区| 99麻豆久久久国产精品免费优播| 亚洲另类中文字| 日韩一级黄色片| thepron国产精品| 午夜精品一区在线观看| 久久综合色播五月| 欧美亚洲一区三区| 国产综合色产在线精品| 亚洲一二三区在线观看| 欧美精品一区二| 欧美综合一区二区| 国产精品2024| 日本麻豆一区二区三区视频| 中文字幕国产精品一区二区| 3d动漫精品啪啪一区二区竹菊 | 欧美日韩国产三级| 国产精品77777竹菊影视小说| 一区二区三区成人在线视频| 久久久久久电影| 3atv一区二区三区| 91在线云播放| 成人一区二区在线观看| 美女网站一区二区| 午夜影院久久久| 亚洲精品美腿丝袜| 1区2区3区国产精品| 久久中文娱乐网| 日韩欧美国产一二三区| 欧美又粗又大又爽| 99久久免费国产| 国产成人超碰人人澡人人澡| 天天操天天干天天综合网| 亚洲视频精选在线| 中文字幕一区二区在线播放| 久久午夜国产精品| 欧美一区二区三区在线观看视频 | 日本午夜精品视频在线观看 | 国产精品久久一卡二卡| 久久一区二区视频| 欧美精品一区二区三区蜜桃 | 中文字幕亚洲视频| 国产亚洲一二三区| 国产亚洲va综合人人澡精品| 日韩免费高清电影| 亚洲精品一区二区三区99| 欧美一区二区免费| 欧美xxxxx牲另类人与| 日韩欧美国产精品一区| 欧美久久免费观看| 欧美一区二区三区播放老司机| 欧美日韩一卡二卡| 欧美三级在线看| 制服丝袜亚洲色图| 6080国产精品一区二区| 欧美一区二区精美| 日韩欧美一二区| 日本一区二区免费在线观看视频| 国产日韩欧美精品一区| 欧美激情一二三区| 亚洲女与黑人做爰| 午夜日韩在线电影| 秋霞av亚洲一区二区三| 久草在线在线精品观看| 黄网站免费久久| 国产·精品毛片| 色先锋aa成人| 欧美一级久久久久久久大片| 日韩欧美成人一区二区| 国产欧美日韩三级| 亚洲电影你懂得| 极品瑜伽女神91| 99国产精品视频免费观看| 91丨九色丨蝌蚪富婆spa| 欧美在线视频全部完| 91麻豆精品国产91久久久资源速度| 欧美一级理论性理论a| 日本一二三四高清不卡| 夜夜夜精品看看| 国产一区二区三区观看| 91丝袜高跟美女视频| 91精品婷婷国产综合久久| 国产亚洲欧洲997久久综合 | 爽好多水快深点欧美视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产激情一区二区三区四区| 成人app网站| 欧美一级一区二区| 中文字幕五月欧美| 久久99精品久久久| 91美女福利视频| 久久综合视频网| 午夜精品免费在线| 97国产一区二区|