maciu
27.08.2003, 11:16:26
Chciałbym zaczerpnąc od Was wiedzy na temat optymalizacji bazy Mysql.
Posiadam baze w których jest wiele pól, w tym jest jedno pole o typie TEXT, w który znajuduje się długi tekst.
Moje wątpliwości wiążą się z tym, czy lepiej zostawić tabele bazy w takiej formie jak przedstawiłem, czy rozdzielić ją na dwie tabele gdzie w jednej będzie tylko pole TEXT, w a drugiej pozostałe pola.
Czy jeżeli rozdziel tą tabele na dwie to szybciej będzie ona działać, szybciej będą pobierane wyniki z takiej bazy?
Bardzo Was proszę o opinie
uboottd
27.08.2003, 11:26:33
Jesli zawsze przy okazji pobierania wierszy z tej tabeli pobierasz ten TEXT to w jednej tabeli bedzie to szybsze. Jesli jednak co najmniej spora czesc zapytan omija ta kolumne to oplaca sie rodzielic to na dwie tabele, ale wtedy tez zwroc uwage na typy w tabeli z ktorej wylatuje ten TEXT. Jesli sa w niej VARCHAR-y to zamien je na CHAR-y - tez troche przyspieszy.
dragossani
27.08.2003, 16:26:20
Nie sądze żeby wyniesienie jednego z pól do osobnej tabeli przyspieszyło wyszukiwanie. Łatwo to sprawdzić za pomocą EXPLAIN. Jeśli MySQL nie dotyka w ogóle tego pola w trakcie wyszukiwania i szuka wyłącznie po indeksach, to przeniesienie tego pola nic nie zmieni - nawet w zapytaniach nie wyciągających danych z tego pola. Może nawet zaszkodzić (konieczne złączenie).
uboottd
28.08.2003, 07:39:52
Pobieranie, nie wyszukiwanie. Zreszta zwroc uwage na zastrzezenie ze odwolan nie pobierajacych tego pola musi byc znaczaco wiecej niz z pobraniem. Chodzi o to, ze mysql szybciej obsluguje tabele ze stala dlugoscia wiersza (a pole typu TEXT powoduje ze wiersz takim byc nie moze), oraz ma mniejszy plik do przegladania w ogole. Jesli odwolan bez pobrania jest odpowiednio wiecej to narzut czasu na sklejenie jest rownowazony przyspieszeniem takiej tabeli.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.