Milion wierszy z polem o wielkości 100 tys. To przychodzi do 100 Tbajtów danych (używając amerykańskiej definicji "terabajta"). Według documentation: silnik składowania
InnoDB utrzymuje tabel InnoDB obrębie tabel , które mogą być utworzone z kilku plików. Dzięki temu tabela może przekroczyć maksymalny indywidualny rozmiar pliku. Przestrzeń tabel może zawierać partycje z nieprzetworzonymi dyskami , co pozwala na bardzo duże tabele. Maksymalny rozmiar obszaru tabel wynosi 64 TB.
Innymi słowy, możesz mieć większe problemy niż wydajność. Prawdopodobnie będziesz rozprzestrzeniać tabelę na wiele partycji.
Jeśli od czasu do czasu pobierasz tekst i nigdy nie używasz go do wyszukiwania, proponuję, aby zapisać go w osobnej tabeli. W ten sposób możesz dostosować tę tabelę, aby uzyskać dostęp do tych rekordów. Będziesz miał klucz podstawowy używany do odniesienia i wszystkie referencje będą przez ten identyfikator.
Jeśli używasz tekstu do wyszukiwania, w szczególności wyszukiwania w połączeniu z "ustalonymi" danymi, wówczas moją preferencją architektoniczną byłoby włączenie go do tabeli podstawowej w celu ułatwienia wyszukiwania w różnych polach.
Jednak nawet przy tej preferencji prawdopodobnie bezpieczniej jest umieścić ją w innej tabeli. Na przykład MySQL tworzy instancje. Bardzo typowe jest używanie podzapytania przy użyciu *
.Rozważmy prosty przykład: kwerenda, aby uzyskać 1000 najnowsze zapisy uporządkowane według identyfikatora:
select t.*
from (select t.*
from t
order by createddate
limit 1000
) t
order by userid
Zastosowanie t.*
oznacza, że kolumna tekst zostanie również pobrana. Tak więc zapytanie, które może zająć ułamek sekundy (z indeksem), musiałoby odczytać i zapisać 1000 * 100k = 100 MB danych (przynajmniej). To prawdopodobnie potrwa nieco dłużej.
Podsumowując, zalecałbym umieszczenie kolumny tekstowej w tabeli, w której często jest wyszukiwana z innymi kolumnami - na przykład w bazie danych streszczeń artykułów naukowych. W przypadku naprawdę dużych danych umieściłbym je w osobnym polu, dzięki czemu mogłem lepiej zarządzać pamięcią w ekstremalnych przypadkach.
Chcesz dołączyć do pól tekstowych? –
Cóż, jeśli to tylko wskaźnik, to myślę, że lepiej być w tym samym stole. tak długo, jak go nie wybierzesz, nie sądzę, że wpłynie to na twoje zapytania. a jeśli oddzielisz to po prostu więcej "wyszukiwań" dla db zrobić przed dając wynik. –
Brak łączenia w polach tekstowych, mam na myśli dołączenie do tabeli zawierającej tylko pole tekstowe. –