Konfiguruję tabelę, która może mieć maksymalnie 70 kolumn. Zastanawiam się teraz nad podzieleniem go, ponieważ niektóre dane w kolumnach nie będą potrzebne przy każdym dostępie do tabeli. Z drugiej strony, jeśli to zrobię, będę musiał używać złączeń.
Czy w którym momencie, jeśli w ogóle, uważa się, że jest za dużo kolumn?
Odpowiedzi:
Jest uważany za zbyt wiele, gdy przekracza maksymalny limit obsługiwany przez bazę danych .
Fakt, że każde zapytanie nie musi zwracać każdej kolumny, jest całkowicie normalny; dlatego instrukcja SELECT umożliwia jawne nazwanie potrzebnych kolumn.
Zgodnie z ogólną zasadą struktura tabeli powinna odzwierciedlać model domeny; jeśli naprawdę masz 70 (100, co masz) atrybutów należących do tej samej encji, nie ma powodu, aby rozdzielać je na wiele tabel.
źródło
select count(*) from votes
każdym razem, czy myślisz, że być może jest zdenormalizowana? Czy to sprawia, że baza danych SO jest zła, a Jeff Atwood szalony?Istnieją pewne korzyści z podzielenia tabeli na kilka z mniejszą liczbą kolumn, co jest również nazywane partycjonowaniem pionowym . Tu jest kilka:
Jeśli masz tabele z wieloma wierszami, modyfikowanie indeksów może zająć bardzo dużo czasu, ponieważ MySQL musi odbudować wszystkie indeksy w tabeli. Podział indeksów na kilka tabel może to przyspieszyć.
W zależności od zapytań i typów kolumn MySQL może zapisywać tymczasowe tabele (używane w bardziej złożonych zapytaniach wybierających) na dysk. To jest złe, ponieważ dysk I / O może być wielką szyjką butelki. Dzieje się tak, jeśli zapytanie zawiera dane binarne (tekst lub obiekt blob).
Szersza tabela może spowodować wolniejszą wydajność zapytań.
Nie optymalizuj przedwcześnie, ale w niektórych przypadkach możesz uzyskać ulepszenia dzięki węższym tabelom.
źródło
Jest ich za dużo, gdy narusza zasady normalizacji. Uzyskanie tak wielu kolumn jest dość trudne, jeśli normalizujesz bazę danych. Zaprojektuj bazę danych, aby modelować problem, a nie wokół sztucznych reguł lub pomysłów dotyczących optymalizacji pod kątem konkretnej platformy bazy danych.
Zastosuj następujące reguły do szerokiego stołu, a prawdopodobnie będziesz mieć znacznie mniej kolumn w jednej tabeli.
Oto link, który pomoże Ci w tym.
źródło
It is pretty hard to get that many columns if you are normalizing your database.
Nie tak trudne, jak się wydaje.Nie stanowi to problemu, chyba że wszystkie atrybuty należą do tej samej jednostki i nie są od siebie zależne. Aby ułatwić życie, możesz mieć jedną kolumnę tekstową z przechowywaną w niej tablicą JSON. Oczywiście, jeśli nie masz problemu z uzyskaniem wszystkich atrybutów za każdym razem. Chociaż całkowicie zniweczyłoby to cel przechowywania go w RDBMS i znacznie skomplikowałoby każdą transakcję w bazie danych. Dlatego nie jest to zalecane podejście do stosowania w całej bazie danych.
źródło
Zbyt wiele kolumn w tej samej tabeli może również powodować ogromne problemy w replikacji. Powinieneś wiedzieć, że zmiany, które zaszły w master, będą replikowane na slave ... na przykład, jeśli zaktualizujesz jedno pole w tabeli, cały wiersz będzie w
źródło