簡體   English   中英

針對postgres中的視圖的查詢非常慢-可以增強嗎?

[英]Very slow query against view in postgres - possible to enhance?

我有一個Postgres數據庫,其中有大約一百萬個條目(並且正在快速增長)。 我已經創建了該數據庫的視圖,其中每一行的某些列是連接在一起的(並以這種格式):

concat         | count
david55single    5

我正在做的是獲取這種格式的字符串,然后檢查視圖中該字符串是否在視圖中以及計數是多少。 這是我的查詢:

SELECT count from concatview WHERE concat = '<somestring>'; 

此查詢會花費很長時間,這很糟糕,因為我們對用戶的每個請求都執行此查詢。 有什么方法可以延長查詢時間? 根據我從文檔中了解到的,只能對物化視圖編制索引? 我是否需要創建實例化視圖並經常刷新視圖,或者是否有其他方法可以增強常規視圖?

 create index on mytab(col1||col2||col3)

確保在索引上使用與視圖相同的語法。 如果您使用concat()函數進行串聯,則需要創建IMMUTABLE版本的concat()(不可變表示在給定相同輸入的情況下,它始終返回相同的輸出,而標准concat則不是)標記為不可變的,但是在很多情況下,可以安全地將其包裝為不可變的函數)。 這將允許對視圖的查詢利用索引。

注意:|| 如果任何列可為空,則串聯運算符將不能很好地發揮作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM