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

Czy wybranie wszystkich kolumn jest złe dla wydajności?

Problemem nie jest tutaj kwestia serwera bazy danych, a jedynie komunikacja sieciowa. Wybierając wszystkie kolumny naraz, każesz serwerowi powrócić do Ciebie, wszystkie kolumny naraz. Jeśli chodzi o obawy związane z IO i tym wszystkim, są one ładnie omówione w pytaniu i odpowiedzi @Karamba w komentarzu:wybierz * vs wybierz kolumnę . Ale w przypadku większości rzeczywistych aplikacji (a używam „aplikacji” w każdym sensie) głównym problemem jest tylko ruch sieciowy i czas potrzebny na serializację, przesłanie, a następnie deserializację danych. Chociaż tak naprawdę odpowiedź jest taka sama.

Tak więc wycofywanie wszystkich kolumn jest świetne, jeśli zamierzasz użyć ich wszystkich, ale może to oznaczać dużo dodatkowego transferu danych, szczególnie jeśli przechowujesz, powiedzmy, długie ciągi w swoich kolumnach. W wielu przypadkach różnica będzie oczywiście niewykrywalna i jest to w większości kwestia zasadnicza. Nie wszyscy, ale zdecydowana większość.

To naprawdę tylko kompromis między twoim wspomnianym lenistwem (i uwierz mi, wszyscy tak się teraz czujemy) a tym, jak ważna jest wydajność naprawdę jest.

To wszystko powiedziane, jeśli robisz zamierzasz użyć wszystkich wartości kolumn, znacznie lepiej jest pobrać je wszystkie za jednym razem, niż wypełnić kilka zapytań.

Pomyśl o tym jak o wyszukiwaniu w Internecie:szukasz, znajdujesz swoją stronę i potrzebujesz tylko jednego szczegółu. Możesz przeczytać całą stronę i wiedzieć wszystko na ten temat lub po prostu przejść do części dotyczącej tego, czego szukasz, i gotowe. Ta ostatnia jest o wiele szybsza, jeśli to wszystko, czego kiedykolwiek chcesz, ale jeśli będziesz musiał nauczyć się innych aspektów, o wiele lepiej byłoby przeczytać je za pierwszym razem, niż ponownie szukać i znaleźć stronę, aby o tym porozmawiać.

Jeśli nie masz pewności, czy w przyszłości będziesz potrzebować innych wartości kolumn, to jest to Twoje wezwanie do wykonania jako programista, w którym przypadku jest bardziej prawdopodobne.

Wszystko zależy od tego, czym jest Twoja aplikacja, jakie są Twoje dane, jak jej używasz i jak ważna jest wydajność naprawdę jest dla ciebie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mySQL zwraca indeks po wstawieniu

  2. Jak zablokować odczyt/zapis w tabelach MySQL, aby móc wybierać, a następnie wstawiać bez innych programów odczytujących/zapisujących do bazy danych?

  3. SQLSTATE[23000]:Naruszenie ograniczenia integralności:1217

  4. Czy SQL Server 2005 ma odpowiednik typu danych ENUM w MySql?

  5. Pozwól użytkownikom MySQL tworzyć bazy danych, ale zezwalaj na dostęp tylko do własnych baz danych