Re: Index not recognized
От | Greg Stark |
---|---|
Тема | Re: Index not recognized |
Дата | |
Msg-id | 87ptf11n1j.fsf@stark.dyndns.tv обсуждение исходный текст |
Ответ на | Index not recognized ("Grace C. Unson" <gracec@ntsp.nec.co.jp>) |
Список | pgsql-sql |
"Grace C. Unson" <gracec@ntsp.nec.co.jp> writes: > Why is it that my index for text[] data type is not recognized by the > Planner? > > I did these steps: > > 1. create function textarr(text[]) returns text language sql as 'select > $1[1]' strict immutable > 2. create index org_idx on EmpData (textarr(org)); This index will only be used if you use the expression textarr(org) in your query. You would probably have some success if you did: select * from empdata where textarr(org) = 'math' > 3. vacuum full > 4. explain analyze select name from EmpData where org *= 'math'; Is this *= operator from the contrib/array directory? It's not an indexable operator at all using standard btree indexes. The GiST indexing does make indexable operators that can do things like *= but that's a whole other ball of wax. What are you really trying to do? > Result: > ========= > Seq Scan on EmpData (cost=0.00..3193.20 rows=102 width=488) > (actual time=3.71.35..371.35 rows=0 loops=1) > > Filter: (org[0]='math'::text) Well that's awfully odd. I don't know how that expression came out of the query you gave. You'll have to give a lot more information about how you're defining *= and why you think it's related to the function you used to define the index. -- greg
В списке pgsql-sql по дате отправления: