Podczas wyszukiwania przez SO, znalazłem dwie sprzeczne odpowiedzi (a nawet komentarz, który to stwierdził), ale brak ostatecznej odpowiedzi:zapisać TEKST/BLOB w tym samym stole, czy nie?
Problem polega na tym, czy istnieje jakakolwiek korzyść z wydajności, jeśli przechowujesz pole TEKST/BLOB poza stołem?
Zakładamy:
- Państwo prawidłowo wybrać (tylko WYBORU TEXT/BLOB jeśli wymagane żadne select *)
- Tablice są indeksowane prawidłowo, gdzie ma to sens (tak, to nie jest kwestia " jeśli ją zindeksować ")
- Projekt bazy danych naprawdę nie ma znaczenia. Jest to kwestia do zidentyfikowania zachowania MySQL w tym szczególnym przypadku, a nie do rozwiązania pewnych problemów związanych z projektowaniem bazy danych. Załóżmy to Baza danych ma tylko jedną tabelę (lub dwóch, jeśli TEXT/BLOB zostaje oddzielony)
- Silnik: InnoDB (inne byłoby ciekawe też, jeśli oni pobierać różne wyniki)
ten post stany, że umieszczenie TEKSTU/BLOBA w oddzielnej tabeli, pomaga tylko wtedy, gdy już wybrałeś w niewłaściwy sposób (zawsze WYBIERAJĄC TEKST/BLOB, nawet jeśli nie jest to konieczne) - zasadniczo stwierdzając, że TEKST/BLOB w ta sama tabela jest w gruncie rzeczy lepszym rozwiązaniem: (mniej złożoności, brak wydajności, itp.), ponieważ TEKST/BLOB jest przechowywany niezależnie i tak
Jedynym momentem, w którym przenoszenie kolumn TEXT do innej tabeli przyniesie jakąkolwiek korzyść, jest tendencja do wybierania zazwyczaj wszystkich kolumn z tabel. Jest to jedynie wprowadzenie drugiej złej praktyki, aby zrekompensować pierwszą. Nie trzeba dodawać, że te dwie krzywdy to nie to samo, co trzy lefty.
Ten post, stwierdza jednak, że:
Jeśli tabela zawiera tekst lub BLOB kolumn w tabeli nie mogą być przechowywane w pamięci
Czy to oznacza, że wystarczy już TEXT/BLOB w tabeli, aby uzyskać wydajność?
Moje pytanie zasadniczo brzmi: Jaka jest prawidłowa odpowiedź?
Czy to naprawdę ma znaczenie, jeśli zapisujesz TEKST/BLOB w oddzielnej tabeli, jeśli prawidłowo wykonałeś SELECT
?
Czy nawet posiadasz TEKST/BLOB wewnątrz stołu, możesz stworzyć potencjalne trafienie wydajności?
Każdy konkretny aparat do przechowywania danych, którego używasz? InnoDB/MyISAM/NDB, itp. – gertvdijk
@gertvdijk Dodałem go - jestem szczególnie zainteresowany rozwiązaniem dotyczącym InnoDB - ale zasadniczo, jeśli jest różnica, MyISAM i inne silniki pamięciowe również będą interesujące – Katai