Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Optymalizacja zapytania
tmk
post 10.03.2006, 10:47:07
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 15.04.2004
Skąd: w-wa

Ostrzeżenie: (0%)
-----


Witam,

w bazie mam okolo 10000 rekordów, 3 pola tabeli: id, kto, zakonczyl
Jest to baza osób z oznaczeniem, czy mają aktywną usługę, czy już nie. Osoby, które mają usługę aktywną oznaczam poprzez przypisanie wartości NULL do zakonczyl, a osoby które zakończyły, poprzez wpisanie daty do zakonczyl

Teraz gdybym chciał wypisać tych, którzy mają usługę aktywną użyłbym zapytania:
  1. SELECT*
  2. FROM tabela
  3. WHERE zakonczył IS NULL;


Wiadomo, że wartości NULL nie są indeksowane, czyli założenie indeksu na zakonczyl nic nie da. Czy da się jakoś przyspieszyć to zapytanie? żeby obronić sie przez FULL Table Scan?
Go to the top of the page
+Quote Post
ergo
post 10.03.2006, 11:01:28
Post #2





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.03.2005

Ostrzeżenie: (0%)
-----


a nie mozesz sprawdzic po prostu czy data nie jest mniejsza od jakiejs wartosci ?
albo czy nie lepiej by bylo tam wpisac data=0 ?

Ten post edytował ergo 10.03.2006, 11:02:28


--------------------
Go to the top of the page
+Quote Post
tmk
post 10.03.2006, 11:06:07
Post #3





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 15.04.2004
Skąd: w-wa

Ostrzeżenie: (0%)
-----


Poszukuje rozwiązania dla własnie tak zbudowanej tabeli, jak to przedstawiłem.
Załóżmy, że mam to narzucone z góry i zadaniem jest zoptymalizowanie zapytania dla Takiej tabelki.
Go to the top of the page
+Quote Post
ergo
post 10.03.2006, 11:57:56
Post #4





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.03.2005

Ostrzeżenie: (0%)
-----


  1. SELECT*
  2. FROM tabela
  3. WHERE zakonczył < najmniejsza DATA jaka masz;

powinno chyba starczyc ?


--------------------
Go to the top of the page
+Quote Post
tmk
post 10.03.2006, 12:30:40
Post #5





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 15.04.2004
Skąd: w-wa

Ostrzeżenie: (0%)
-----


ale warunek dla daty:
  1. WHERE zakonczyl<data
nie da w wyniku rekordów, które mają wartość NULL w tej kolumnie...jedynie te, które mają datę wpisaną, różną od NULL i mniejszą od data. A właśnie nie o to mi chodzi..
Go to the top of the page
+Quote Post
ergo
post 10.03.2006, 12:57:43
Post #6





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.03.2005

Ostrzeżenie: (0%)
-----


no i co z tego ? przeciez to co dostaniesz w wyniku bedzie takie samo , i do tego uzyje ci indeksow.


--------------------
Go to the top of the page
+Quote Post
tmk
post 10.03.2006, 13:20:50
Post #7





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 15.04.2004
Skąd: w-wa

Ostrzeżenie: (0%)
-----


Cytat
no i co z tego ?
ja chcę znaleźć tych, którzy mają wartość NULL, a podana przez Ciebie metoda tego nie rozwiązuje - pominie tych, którzy mają NULL
Chyba nie do końca zrozumiałeś o co chodzi

Ten post edytował tmk 10.03.2006, 13:26:39
Go to the top of the page
+Quote Post
ergo
post 10.03.2006, 13:37:06
Post #8





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.03.2005

Ostrzeżenie: (0%)
-----


znajdzie, przeciez powinno ich potraktowac jakby mieli 0 ?


--------------------
Go to the top of the page
+Quote Post
tmk
post 10.03.2006, 13:39:48
Post #9





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 15.04.2004
Skąd: w-wa

Ostrzeżenie: (0%)
-----


No tym się właśnie rózni Null od zera .... , że nie znajdzie.
Null = nic, a nie zero.
To samo można sprawdzić na przykład korzystając z count(colX) - zlekceważy wiersze, które mają w colX NULL, ale te wiersze, które mają w colX 0, zliczy.
Go to the top of the page
+Quote Post
orson
post 10.03.2006, 13:51:04
Post #10





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

Ostrzeżenie: (0%)
-----


witam ...

załóż indeks wspólny dla id i zakończył

pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 13:57