Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 6.688 pregleda

Najnovija ↓

Indeksiranje ne radi? 05.05.2006. u 13:27 · pre 249 meseci #1
Čini se da indeksi ne rade dobro ako tabela ima veliki broj redova (nekoliko miliona). Naime, tabela je indeksirana po datumu pa bi pretraga po datumu morala da se odvija koristeći indeks. EXPLAIN to i pokazuje ako je broj redova do otprilike 470 000. Ako je broj redova koje treba pretražiti veći od ovog broja, onda će EXPLAIN pokazati da se pretraga radi sekvencijalno. Da li je neko imao sličan problem?
Verzija je 8.0.3.
Potpis
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
Re: Indeksiranje ne radi? 06.05.2006. u 12:56 · pre 249 meseci #2
Da li skoro radio
Code:

VACUUM ANALYZE


Uradi prvo vacuum pa onda probaj EXPLAIN, jer moze da se dogodi da optimizator upita odabere sekvencijalnu
pretragu, pre nego indeksnu, ako je tabela prevelika, ako je skoro reload-ovana/dump-ovana.

Takodje, zgodno je da odradis
Code:

set enable_seqscan to off;

pa vidi da li je brze.

Kada imas DATE kolonu, a radis cesto delete svih starijih od x, zgodno je s vremena na vreme i da reindexiras index,
jer b-tree (prirodno) ne zna kako da iskoristi neiskoricene strane, ukoliko novi datum ne upada u opseg.

Pozdrav,
Milos Babic
Re: Indeksiranje ne radi? 07.05.2006. u 13:22 · pre 249 meseci #3
Sto je sasvim u redu, pri takvoj pretrazi i treba da cita sekvencijalno. Pretpostavljam da citas redove nesto poput 'select neke_kolone from neka_tabela where datum > '01-01-2005' npr. Ukoliko je broj redova koji se vracaju veliki (kao sto si ti primetio, oko pola miliona) onda optimizator zakljuci da mu je jeftinije i brze da cita sekvencijalno tabelu nego da cita index, pa tabelu, pa ponovo index, pa ponovo tabelu...
Re: Indeksiranje ne radi? 10.05.2006. u 12:15 · pre 249 meseci #4
Urađen je potpuni vakuum tabele, pri tome je ispisivao da preuređuje indekse ali nema promene.
Pokušano i sa pravljenjem nove tabele i smeštanjem podataka u nju. U nju se ne upisuju podaci već samo čitaju, pa nema "rupa", ali pretraga po indeksu ne ide za veći broj redova.
Sve u svemu, kao da indeks ima opseg preko kojega ne može.
Potpis
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
Re: Indeksiranje ne radi? 12.05.2006. u 07:19 · pre 249 meseci
izmenjeno 1 put, poslednji put chachka 12.05.2006. u 07:23
  1. chachka12.05.2006. u 07:23zapis iz teksta poruke
#5
Nemas razloga za brigu. Indeksi nemaju ogranicenja na broj indeksiranih podataka.

Kao sto ti je Matic vec rekao, na osnovu statistike je optimizator upita (ili vec necega davno sam citao taj deo dokumentacije) odlucio da mu je brze da ne koristi indeks.

Upotreba indeksa nije uvek najbrzi put za koricenje tabele. Primer iz zivota: Kad ja citam knjigu onako od korice do korice ne citam non-stop sadrzaj knjige. Sadrzaj koristim kad hocu da nadjem odredjeno poglavlje.

Chachka

PS: PostgreSQL je izuzetna baza. Steta je sto je slabo zastupljena u praksi, sto siromasnost ovog foruma pokazuje.
Potpis
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
Re: Indeksiranje ne radi? 02.03.2007. u 13:51 · pre 239 meseci #6
Chachka: PostgreSQL je izuzetna baza. Steta je sto je slabo zastupljena u praksi, sto siromasnost ovog foruma pokazuje.



..ali je razmena inforamcija toliko kvalitetena da me je PostgreSQL privukao.
Potpis
Slabo koje drvo sam mogao videti, ali sam poznavao celu šumu koju. Moja lična
apstrakcija izmedju specifikacije i generalizacije.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme