Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Duża liczba kolumn w bazie danych MySQL

Ok, widzę twój dialem, a przy (przypuszczalnie krótkotrwałym) braku eksperta od baz danych przedstawię ci moją opinię.

Ze względu na zdrowy rozsądek rozbij swoje dane. Załóżmy, że przechowujesz informacje o ludziach. Nie potrzebujesz 200 kolumn w 1 tabeli. Powinieneś je podzielić i mieć wiele kolumn w wielu tabelach. np.

tblGeneralCharacteristics:
 - colEyeColor
 - colHairColor
 - colHeight
 - colWeight

tblInterests:
 - colFaveColor
 - colFaveSport

tblRelationships
 - colMother
 - colFather
 - colBrother
 - colSister

Ta droga jest znacznie lepsza. Obliczeniowo wątpię, czy ma to duże znaczenie. Oczywiście z każdym zapytaniem otrzymujesz mniej danych, więc w przypadku niektórych raportów (gdzie może nie być konieczne pobieranie wszystkich danych lub przeglądanie wszystkich danych) może to być szybsze (chociaż jeśli poprawnie zindeksujesz bazę danych, nie powinno to nie problem).

Przejdźmy do następnego wydania. Ilość rekordów w bazie danych. Jeśli 10 000 zaczyna być trochę za duże, czas zacząć buforować.

Teraz, jeśli o mnie chodzi, nie ma dobrego ani złego sposobu buforowania danych. Potrzebujesz tego, czego potrzebujesz. Na przykład w swoim pytaniu wspomniałeś o uzyskaniu średniej wysokości dla wagi dla rekordów wprowadzonych między styczniem a marcem 2012. Cóż... możesz napisać skrypt crona, który obliczy średni wzrost dla wagi dla wszystkich wprowadzonych rekordów w tym miesiącu i zapisze to gdzieś w innym stole. Następnie tworząc raport, wystarczy pobrać wartości dla stycznia, lutego i marca i uśrednić je... to znacznie prostsze. Zamiast wykonywać kwerendę obliczeniową na potencjalnie tysiącach wierszy, wykonujesz kwerendę cron (co nie ma znaczenia, jak długo to zajmie) na kilkaset wierszy, a następnie rzeczywisty raport wysyła zapytania tylko do 3 wierszy.

Kolejna sztuczka polega na tym, że im więcej obliczeń możesz wykonać w SQL, tym lepiej. Jeśli chcesz uśrednić pola/rekordy lub coś zsumować, wyślij to z zapytaniem SQL. Serwer SQL wykona obliczenia i zwróci wynik, zamiast zwracać ogromne ilości danych do przesiewania. Wiem, że nie zawsze jest to łatwe/użyteczne, ale im więcej możesz uzyskać SQL, tym lepiej.

Mam nadzieję że to pomoże. Tak jak powiedziałem, jestem pewien, że ekspert od baz danych ma ochotę udzielić ci bardziej wnikliwych porad. :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z przygotowanych instrukcji za pomocą mysql w pythonie

  2. Próba „wywołania” procedur składowanych za pomocą CodeIgniter

  3. Ustawienie rozmiaru strony Innodb

  4. Dlaczego nie mogę wyświetlić dwa razy tego samego wyniku za pomocą mysqli_fetch_assoc?

  5. Czy kopiowanie katalogu /var/lib/mysql jest dobrą alternatywą dla mysqldump?