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