時間:2024-02-13 10:22作者:下載吧人氣:21
一、使用EXPLAIN:
PostgreSQL為每個查詢都生成一個查詢規(guī)劃,因?yàn)檫x擇正確的查詢路徑對性能的影響是極為關(guān)鍵的。PostgreSQL本身已經(jīng)包含了一個規(guī)劃器用于尋找最優(yōu)規(guī)劃,我們可以通過使用EXPLAIN命令來查看規(guī)劃器為每個查詢生成的查詢規(guī)劃。
PostgreSQL中生成的查詢規(guī)劃是由1到n個規(guī)劃節(jié)點(diǎn)構(gòu)成的規(guī)劃樹,其中最底層的節(jié)點(diǎn)為表掃描節(jié)點(diǎn),用于從數(shù)據(jù)表中返回檢索出的數(shù)據(jù)行。然而,不同的掃描節(jié)點(diǎn)類型代表著不同的表訪問模式,如:順序掃描、索引掃描,以及位圖索引掃描等。如果查詢?nèi)匀恍枰B接、聚集、排序,或者是對原始行的其它操作,那么就會在掃描節(jié)點(diǎn)”之上”有其它額外的節(jié)點(diǎn)。并且這些操作通常都有多種方法,因此在這些位置也有可能出現(xiàn)不同的節(jié)點(diǎn)類型。EXPLAIN將為規(guī)劃樹中的每個節(jié)點(diǎn)都輸出一行信息,顯示基本的節(jié)點(diǎn)類型和規(guī)劃器為執(zhí)行這個規(guī)劃節(jié)點(diǎn)計算出的預(yù)計開銷值。第一行(最上層的節(jié)點(diǎn))是對該規(guī)劃的總執(zhí)行開銷的預(yù)計,這個數(shù)值就是規(guī)劃器試圖最小化的數(shù)值。
這里有一個簡單的例子,如下:
網(wǎng)友評論