Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jakie klucze dobrać do tabeli ?
gothye
post
Post #1





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


witam
posiadam tabele w której gromadzę wydarzenia wg daty oraz typu (max 20 typów) ,tabela będzie zawierać max 100.000 rekordów ,a dane będą wyszukiwane według typu i daty , chciałbym założyć odpowiednie klucze dla tabeli aby przyśpieszyć wyszukiwanie rekordów z tabeli.

  1. CREATE TABLE IF NOT EXISTS `occurred` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `date` date NOT NULL,
  4. `type` tinyint(3) UNSIGNED NOT NULL DEFAULT '1',
  5. `text` text NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
tr@k
post
Post #2





Grupa: Zarejestrowani
Postów: 41
Pomógł: 8
Dołączył: 13.09.2010

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


Skoro wyszukujesz według typu i daty to daj indeksy właśnie na te pola, jeśli zawsze wyszukujesz po obu to wystarczy jeden index na 2 pola.
Go to the top of the page
+Quote Post
mkozak
post
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 21.03.2005

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


Jeżeli będziesz używał zawsze typu i daty to tak:

  1. ALTER TABLE `occurred` ADD INDEX ( `type` , `date` ) ;


Kolejność nie jest przypadkowa. Dla zapytań tylko z datą lepszy był by klucz zapisany `date`,`type`. Sam musisz sobie odpowiedzieć na pytanie, czy czasem zdarzy ci się używać do wyszukiwania samej daty.
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@mkozak:
Ja bym z założenia zrobił indeks na obu kolumnach, ale w odwrotnej kolejności niż Ty podałeś (czyli najpierw date, potem type). Dlaczego? Domyślam się, że w polu date będzie większy "rozrzut" danych, natomiast kolumna type będzie zawierała zapewne kilka z góry zdefiniowanych wartości (np. od 1 do 10). W takim przypadku mój indeks będzie wydajniejszy od Twojego. No i od razu mamy możliwość wyszukiwania tylko i wyłącznie po dacie. Typ? No coś za coś (IMG:style_emoticons/default/smile.gif) Zawsze można dodać kolejny indeks tylko dla typu, ale to może okazać się zbędne (konieczna będzie analiza użycia indeksów po jakimś czasie użytkowania).
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 10:14