why does seq scan instead of index scan

Поиск
Список
Период
Сортировка
От 中川 誠貴
Тема why does seq scan instead of index scan
Дата
Msg-id 49A94E2FF0F642B4ACBE09DB20CA5630@IVPNAKAGAWAPC
обсуждение исходный текст
Ответы Re: why does seq scan instead of index scan  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-sql
Hello everyone.

I'm trying to use like 'xx%' search on Text[] column.

Here is the SQL.


Select * From table Where 'aa' <= ANY(keywords) and 'aa\uFFFD' > 
ANY(keywords)

This looks like wooking as I intend.

But partially not working.

There is the explanation.

Explain Select * From table Where 'aa' <= ANY(keywords) and 'aa\uFFFD' > 
ANY(keywords)

--\uFFFD is max unicode
-- keywords field is Text[]

"Seq Scan on table  (cost=10000000000.00..10000000081.98 rows=275 
width=1870)"
"  Filter: (('aa'::text <= ANY (keywords)) AND ('aa\uFFFD'::text > ANY 
(keywords)))"


I thought it uses index scan. But actually it uses seq scan.

Why?

I don't get it.


When I seach with the following SQL on Text column, it uses index scan, and 
perfectlly working.

Select * From table Where keyword >= 'aa' and keyword < 'aa\uFFFD'

"Bitmap Heap Scan on table  (cost=4.36..35.63 rows=11 width=1870)"
"  Recheck Cond: ((keyword >= 'aa'::text) AND (keyword < 'aa\uFFFD'::text))"
"  ->  Bitmap Index Scan on table_keyword_idx  (cost=0.00..4.36 rows=11 
width=0)"
"        Index Cond: ((keyword >= 'aa'::text) AND (keyword < 
'aa\uFFFD'::text))"

INDEX table_keywords_idxON tableUSING GIN(keywords);


INDEX table_keyword_idxON tableUSING btree(keyword);


I changed the index, table_keywords_idx to btree, but also not working...


Why index scan is not used on Text[], despite index scan used on Text field?


Thank you in advance.



В списке pgsql-sql по дате отправления:

Предыдущее
От: George Francis
Дата:
Сообщение: Re: joining one record according to max value
Следующее
От: Tom Lane
Дата:
Сообщение: Re: why does seq scan instead of index scan