[PostgreSQL] Problem z korzystaniem z indeksu
Andrzej Nakonieczny - 12-01-2006 09:31
[PostgreSQL] Problem z korzystaniem z indeksu
Witam.
Jest sobie taka oto tabela:
poligon=> \d corporations Table "public.corporations" Column | Type | Modifiers ---------------+------------------------+-------------------------------------------------------------- id | integer | not null default nextval('public.corporations_id_seq'::text) name | character varying(255) | identitiesref | integer | not null Indexes: "corporations_pkey" PRIMARY KEY, btree (id) "idx_06" btree (identitiesref) "idx_11" btree (name) Foreign-key constraints: "corporations_identitiesref_fkey" FOREIGN KEY (identitiesref) REFERENCES identities(id)
poligon=>
W jaki sposób zmusić postgresa aby przy zapytaniu o kolumnę name z wykorzystaniem like użył indeksu (tutaj idx_11) zamiast seq scan ? Bo teraz wygląda to tak:
poligon=> EXPLAIN analyze select * from corporations where name = 'Jili s.c.'; QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- Index Scan using idx_11 on corporations (cost=0.00..6.02 rows=2 width=23) (actual time=0.046..0.097 rows=10 loops=1) Index Cond: ((name)::text = 'Jili s.c.'::text) Total runtime: 0.144 ms (3 rows)
poligon=>
i to jest poprawne ale już:
poligon=> EXPLAIN analyze select * from corporations where name like 'Jili s.%'; QUERY PLAN -------------------------------------------------------------------------------------------------------------------------- Seq Scan on corporations (cost=100000000.00..100007941.08 rows=1 width=23) (actual time=0.027..205.708 rows=12 loops=1) Filter: ((name)::text ~~ 'Jili s.%'::text) Total runtime: 205.777 ms (3 rows)
poligon=>
Tabela ma około 400k rekordów, analyze na tabeli zapuszczone, vacuum wcześniej wykonane, ustawiłem również random_page_cost na 2 (maszyna dość szybka). Próbowałem wyłączyć seqscan ale jest wciąż uparty. Jakieś inne propozycje ?
Pozdrawiam, Andrzej
Artur Muszynski - 15-01-2006 19:16
> poligon=> EXPLAIN analyze select * from corporations where name like 'Jili > s.%';
CREATE INDEX idx ON tbl (col varchar_pattern_ops);
Poszukaj hasła operator class w manualu.
artur
> Pozdrawiam, > Andrzej >
Andrzej Nakonieczny - 15-01-2006 19:16
Artur Muszynski <arturm@union.wytnijto.com.pl> wrote:
> CREATE INDEX idx ON tbl (col varchar_pattern_ops); > > Poszukaj hasła operator class w manualu.
Dzięki, pomogło.
Pozdrawiam, Andrzej
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
[PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?=
postgresql - int/int
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
plik corel 11 na corel 8 = problem z otwarciem
zanotowane.pldoc.pisz.plpdf.pisz.plquentinho.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|