![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 5.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jesteście w stanie mi wytłumaczyć dlaczego zapytanie grupujące na tebeli z polem varchar jest wykonywana 18x szybciej niż na tej samej tabeli, tylko że pole varchar zostało zamienione na tinytext.
Nie chodzi tu o rozmiar tabeli, bo oba te typy nic w rozmiarze nie zmieniają. O co chodzi?! Tabela 4.000.000 wierszy, 300MB |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 470 Pomógł: 75 Dołączył: 21.09.2005 Skąd: że znowu Ostrzeżenie: (0%) ![]() ![]() |
pole varchar ma stałą długość pola typu text są polami o zmiennej długości (chodzi o długość ciągu przechowywanego przez bazę) stąd też łatwiej bazie skakać po rekordach o równych długościach (zawsze taki sam przeskok) niż po rekordach o różnej długości (najpierw wyciąga informacje o długości pola, odczytuje dane a następnie może przeskoczyć dalej)
|
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat pole varchar ma stałą długość pola typu text są polami o zmiennej długości (chodzi o długość ciągu przechowywanego przez bazę) chyba pomylilo ci sie z char@Yataman to i owo tu napisali: http://forums.mysql.com/read.php?24,105964,105964 glowne wyjasnienie w drugim poscie |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 5.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowiedź. Ku przestrodze innych zamieszczam czasy wykonania poszczególnych zapytań:
SELECT SQL_NO_CACHE * FROM tabela_var GROUP BY kategoria 7.3661s | 7.1696s | 7.3784s | 7.3916s | ŚREDNIA: 7.3723s SELECT SQL_NO_CACHE * FROM tabela_text GROUP BY kategoria 53.268s | 53.0011s | 53.3888s | 53.269s | ŚREDNIA: 53.2685s Dane w tabelach są identyczne. Tabele różnią się tylko typem dwóch pól tekstowych. Jeśli choć jedno pole zmieniam na TEXT to czas wykonania zapytania dramatycznie wzrasta. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
A czy na te pola sa pozakladane odpowiednie INDEXY?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 5.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Na pole kategoria, po którym dokonywane jest grupowanie jest założony indeks...
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 13:13 |