0

我有 60k 条记录的表“拍卖”。它有一个向量列,其中包含 tsearch 向量,如下所示

auctions.tsvector_content_tsearch
107658 | '-75':75 '-83':81 '0.265':49 '0.50':140 '1':62 '1000':61 '1080':38 '16':39 '160':91 '170':86 '1920':36 '1920x1080':65,69 '2':154 '219':129 '23':3,20 '23.0':31 '236v3lsb':6,23 '24':164 '24.75':134 '250':58 '3.190':117 '30':80 '426':127 '5':54 '5.0':99 '56':74 '566':125 '9':40 'black':45 'cal':32 'cd/m2':59 'compatible':158 'czarny':46 'czas':51 'czuwać':139 'częstotliwość':71,77 'd':110,114 'd-sub':109 'dodatkowy':146,152 'dvi':7,24,113 'dvi-d':112 'ekran':30 'energia':131,137 'energy':97 'epeat':100 'ergonomics':104 'full':41 'g':120 'gs':106 'gwarancja':153,161 'hd':42 'hz':76 'informacja':151 'jasność':56 'kabel':147,149 'kensington':156 'kg':116,118 'khz':82 'kolor':43 'kontrast':60 'kąt':83,88 'lcd':2,15,19 'led':4,21 'lina':28 'lock':157 'maksymalny':64 'matryca':34,53,57 'miejsce':165 'miesiąc':163 'mm':50 'monitor':1,14,18,96 'mś':55 'nazwać':12 'norma':93 'obudowa':44 'odchylać':72,78 'ogólny':17 'okres':159 'opis':16 'optymalny':68 'philips':5,11,22 'piksel':66,70 'pionowy':73,85 'plamka':48 'pobór':130,136 'poziom':90 'poziomy':79,90 'producent':10 'przekątna':29 'przeć':133 'reakcja':52 'rodzina':25 'rohs':102 'rozdzielczość':63,67 'rękojmia':160 'serwis':167 'serwisować':166 'silver':101 'specyfikacja':8 'spełniać':94 'star':98 'stopień':87,92 'sub':111 'techniczny':9 'tryb':138 'tryba':138 'tuv':103,105 'typ':13,33 'v':27 'v-line':26 'vga':150 'waga':115 'wbudować':142 'widzenia':84,89 'widzenie':84,89 'widzieć':84,89 'wielkość':47 'wuxga':35 'wymiar':119 'wyposażenie':145 'wyposażyć':145 'x':37,121,123,126,128 'zasilacz':143 'zasilać':148 'zewn':108 'zewnętrzny':168 'złączać':107 'złącze':107 'łat':155 'ś':122

表拍卖在该列上有一个索引:

    "auctions_tsvector_content_tsearch_idx" gin (tsvector_content_tsearch)

当我搜索一些匹配的向量查询大约需要 4000-5000 毫秒;那太长了。
有什么办法可以加快速度吗?

EXPLAIN SELECT auctions.id FROM auctions WHERE (auctions.tsvector_content_tsearch @@ to_tsquery('polish', 'lcd'));


           QUERY PLAN                          
--------------------------------------------------------------
 Seq Scan on auctions  (cost=0.00..6598.02 rows=7762 width=4)
   Filter: (tsvector_content_tsearch @@ '''lcd'''::tsquery)
(2 rows)

_ 编辑 __

好的,我想我发现了一个问题:波兰语词典。使用标准的 postgres 字典修复长时间的问题。感谢提示

4

1 回答 1

1

显然,规划器估计顺序扫描会比使用索引更快。尝试以下操作:

  • SET enable_seqscan=off(但对测试有用 - 不要在生产中使用它)
  • 提高统计目标

这种行为有时会发生在 GIN 索引中。检查PostgreSQL 邮件列表上的这个线程。您还可以查阅有关此问题的官方PostgreSQL 文档。

于 2012-10-17T09:56:13.967 回答