Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Pytanie o indeksy
adam882
post
Post #1





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

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


Witam

Przykładowo posiadam takie zapytanie:
  1. SELECT * FROM newsy WHERE activ=1 ORDER BY id DESC

pobierane są nim najnowsze, aktywne newsy. Czy jest sens nakładania indeksów dla activ, gdzie wartość INT jest równa 0 lub 1? Czy to ma sens?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




z indexem na activ zapytanie:
select * from table where activ=1
weźmie pod analize tylko rekordy z activ=1
bez indexu to samo zapytanie weźmie do analizy wszystkie rekordy. Przy milionie rekordów naprawdę odczujecie roznice (IMG:style_emoticons/default/smile.gif)

Cytat
nie zastanawiałem się nad tym, zwykle stosuję INT w przypadku cyfr. Czy w takim przypadku, gdzie mam wartość 0 lub 1 warto zastosować tinyint? Odbije się to w stosunku do wydajności?
INT zajmuje kilka bajtów, TINYINT zajmuje jeden bajt. Przemnóż sobie teraz to przez kilka milionow i juz bedziesz wiedzial na czym zyskasz pisząc optymalnie.
Go to the top of the page
+Quote Post
phpion
post
Post #3





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




Cytat(nospor @ 24.02.2010, 14:32:39 ) *
z indexem na activ zapytanie:
select * from table where activ=1
weźmie pod analize tylko rekordy z activ=1
bez indexu to samo zapytanie weźmie do analizy wszystkie rekordy. Przy milionie rekordów naprawdę odczujecie roznice (IMG:style_emoticons/default/smile.gif)

No ale przecież trzeba wziąć pod uwagę jaki będzie rozkład wartości 0 / 1. Najprawdopodobniej zdecydowana większość rekordów będzie miała wartość 1. Rekordy z activ=0 to będą (zapewne) nowe rekordy czekające na akceptację. Po akceptacji status zmieni się na 1, a w przypadku braku akceptacji rekord zostanie pewnie usunięty (bo po co go trzymać?). W takim przypadku z miliona rekordów robi się (strzelam) 9 990 000 rekordów ze statusem 1 i 10 000 ze statusem 0. Czy w takim przypadku "naprawdę odczujemy różnicę"? Wątpię. Jeżeli natomiast niezaakceptowane rekordy nie byłyby usuwane to może lepiej byłoby je przenieść do osobnej tabeli jako historia niezaakceptowanych wpisów.
Go to the top of the page
+Quote Post

Posty w temacie
- adam882   [MySQL] Pytanie o indeksy   21.02.2010, 16:23:18
- - Ulysess   hmm może zaśmiecam ale skoro wartość jest albo 0 a...   21.02.2010, 16:30:49
- - adam882   nie zastanawiałem się nad tym, zwykle stosuję INT ...   21.02.2010, 16:49:25
- - piotrooo89   a o czymś takim jak bool nie słyszeli panowie?   21.02.2010, 16:54:58
- - erix   Ale bool w MySQL jest synonimem TINYINT(1), o ile ...   21.02.2010, 19:52:54
- - adam882   CytatA użyj explain, to się dowiesz. Nie używałem ...   23.02.2010, 15:47:31
- - phpion   Cytat(adam882 @ 21.02.2010, 16:23:18 ...   23.02.2010, 15:49:48
- - adam882   dziękuję   23.02.2010, 15:50:27
- - erix   CytatNie używałem nigdy explain, lecz wydaje mi si...   23.02.2010, 18:10:21
|- - phpion   Cytat(erix @ 23.02.2010, 18:10:21 ) A...   24.02.2010, 07:52:52
- - erix   Ok, ale książka jest do MSSQL, a temat o MySQL. Wi...   24.02.2010, 14:25:13
- - nospor   z indexem na activ zapytanie: select * from table ...   24.02.2010, 14:32:39
|- - phpion   Cytat(nospor @ 24.02.2010, 14:32:39 )...   25.02.2010, 10:38:46
- - adam882   Dzięki. Chciałbym jednak poruszyć jeszcze kwestię ...   25.02.2010, 10:15:56
- - nospor   podaj przykladowe opcje. Byc moze przekombinowales...   25.02.2010, 10:20:23
- - adam882   dla ofert turystycznych mam przykładowo takie opcj...   25.02.2010, 10:38:31
- - nospor   no, i tak jak myslalem, mozna to wszystko zapisac ...   25.02.2010, 10:46:53
|- - phpion   Cytat(nospor @ 25.02.2010, 10:46:53 )...   25.02.2010, 10:56:08
- - nospor   Cytatnie przekonałeś mnie, że stosowanie indeksu n...   25.02.2010, 10:58:21


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: 3.10.2025 - 10:19