![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 238 Pomógł: 1 Dołączył: 27.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
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.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
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).
-------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
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.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.07.2025 - 05:25 |