Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Szybkość Text i Varchar, Koszmarnie wolnie wolny text
Yataman
post
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
Go to the top of the page
+Quote Post
devnul
post
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)
Go to the top of the page
+Quote Post
nospor
post
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
Go to the top of the page
+Quote Post
Yataman
post
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.
Go to the top of the page
+Quote Post
maly_swd
post
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?
Go to the top of the page
+Quote Post
Yataman
post
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...
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: 22.08.2025 - 13:13