książka SQL Antipatterns obejmuje ten temat szczegółowo w rozdziale „niejawne kolumny”.
najbardziej typowe zastosowanie zamiennika dla fieldnames w zapytaniu jest podczas pisania zapytania ad-hoc. jest szybszy wpisać "*", zamiast wpisywać każdą nazwę pola, która ma zostać zwrócona Czas programisty jest dość drogi, więc nie ma powodu, by martwić się nieznacznym wzrostem wydajności podczas uruchamiania zapytania ad-hoc, gdzie " Będziemy marnować więcej czasu na wpisywanie nazw.
Jednak nadal należy znać schematy bazy danych, ponieważ oczekiwanie na wartości z kolumny "blob" na dużej liczbie wierszy może również zmarnować dużo czasu, szczególnie jeśli wszystko, co potrzebne, było wartością klucza podstawowego .
Za pomocą SELECT *
, możesz uzyskać dobrą wydajność w danym zapytaniu, ponieważ zwraca niewielki zestaw wyników może kilkaset bajtów, jednak dodać kilka pól kropli do tabeli dla innej funkcji, a może teraz zestaw wyników znajduje się w milionach bajtów i nagle zapytanie jest powolne, mimo że dane, których faktycznie używasz, są bardzo małe. Aby uniknąć tego problemu, nazwij kolumny w zapytaniu.
Jeśli używasz , aby automatycznie dodawać wartości nowych kolumn po ich dodaniu, nadal będziesz ofiarą powyższego scenariusza. To kompromis, który musisz wybrać.
Ważne jest, aby używać SELECT *
, o ile masz powód, z wyjątkiem tego, że lenistwo nie jest uzasadnionym powodem.
To narzędzie jak każde inne. Jeśli nigdy go nie użyjesz, nie martw się o to. –
Może to później doprowadzić do gryzienia, jeśli zmieni się schemat, a kod będzie zależał od kolejności kolumn w zbiorze danych. Poza tym nie ma nic * technicznie * źle z tym. –
@Marc B. Używam go przez cały czas i to może mnie martwić. – Matthew