![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 1 Dołączył: 2.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() |
![]()
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.
|
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 10:19 |