Database
 sql >> Baza danych >  >> RDS >> Database

9 najlepszych praktyk dotyczących pisania zapytań SQL

Jeśli czytasz ten artykuł, najprawdopodobniej znasz już SQL. Wiesz, jak pisać podstawowe zapytania SQL. Istnieje wiele sposobów na wykonanie zapytania SQL w celu uzyskania pożądanych wyników w bazie danych.

Jednak nie wszystkie zapytania SQL są sobie równe. Większość z nich można zoptymalizować zgodnie z najlepszymi praktykami dotyczącymi zapytań SQL. Ten artykuł skupia się na 9 wskazówkach dotyczących optymalizacji zapytań SQL. Po przeczytaniu poznasz wszystkie nakazy i zakazy związane z pisaniem zapytań SQL.

1. Unikaj używania SELECT gwiazdki (SELECT *)

To jedna z najważniejszych najlepszych praktyk SQL. Zapytanie SELECT * zwraca rekordy ze wszystkich kolumn tabeli. Chociaż w niektórych przypadkach jest to pomocne, często powoduje to wiele komplikacji:

  • Może nie być konieczne pobieranie wszystkich kolumn. Jednak SELECT * zwraca je wszystkie, zużywając nadmierną przepustowość do wykonania zapytania przez sieć.
  • Nazwy kolumn w tabeli można zmieniać lub usuwać, a także dodawać nowe kolumny. Dlatego możesz otrzymać nieoczekiwane wyniki dla zapytania SELECT *. Lepszym pomysłem jest określenie nazw kolumn.
  • SELECT * jest wolniejszy niż nazwy kolumn SELECT, ponieważ te ostatnie mogą używać indeksów kolumn do zwracania danych.
  • Kolejność kolumn zwracanych przez SELECT * nie jest pod Twoją kontrolą. Jednak określasz pożądaną kolejność podczas określania nazw kolumn.

2. Dokładnie użyj klauzuli GDZIE i MAJĄC

Klauzule WHERE i HAVING w SQL mają różne funkcje. Dlatego powinniśmy używać ich inaczej. Poniżej znajdują się trzy główne przypadki użycia GDZIE i POSIADAJĄC:

  • WHERE może być używany z zapytaniami CRUD, tj. SELECT, INSERT, UPDATE, DELETE. Z drugiej strony, możesz użyć HAVING tylko z instrukcją SELECT.
  • WHERE filtruje dane przed jakąkolwiek operacją agregacji, taką jak GROUP BY. Wtedy może być używany bez funkcji agregacji. HAVING powinno być używane po agregacji.
  • Możemy użyć funkcji agregacji, takich jak SUM, MIN, MAX COUNT z klauzulą ​​HAVING. Z klauzulą ​​WHERE nie możemy używać funkcji agregujących, chyba że ta klauzula jest częścią podzapytania zawartego w klauzuli HAVING.

3. Użyj zapytania INNER JOIN zamiast klauzuli WHERE do łączenia tabel

Zapytanie JOIN jest prawdopodobnie jednym z najbardziej użytecznych zapytań SQL. Pozwala na WYBÓR danych z wielu tabel. Chociaż możesz użyć klauzuli WHERE, aby uzyskać zagregowane dane z dwóch tabel, klauzula WHERE jest wysoce nieefektywna.

Klauzula WHERE zwraca CROSS JOIN, który jest iloczynem kartezjańskim rekordów w obu kolumnach. Na przykład, jeśli masz 1000 rekordów w tabeli A i taką samą liczbę rekordów w tabeli B, klauzula WHERE utworzy CROSS JOIN z 1000 x 1000 =1 000 000 rekordów.

Jeśli kolumny tabel A i B objęte klauzulą ​​WHERE mają tylko 1000 wspólnych wartości, klauzula WHERE zwróci 1000 rekordów z początkowego 1 000 000 rekordów utworzonych przez produkt kartezjański.

Klauzula INNER JOIN zwraca tylko 1000 rekordów, w których obie tabele A i B mają wspólne wartości w kolumnach. W tym przypadku INNER JOIN ma 1000 razy mniej pracy niż klauzula WHERE.

Niektóre bazy danych konwertują klauzulę WHERE w zapytaniu JOIN na klauzulę INNER JOIN za kulisami. Jednak zawsze zaleca się używanie INNER JOIN jawnie zamiast klauzuli WHERE, aby postępować zgodnie z najlepszymi praktykami kodowania SQL.

4. Użyj EXIST, NOT EXISTS zamiast IN i NOT IN w SQL

Zawsze używaj EXIST zamiast klauzuli IN, jeśli chcesz potwierdzić istnienie wartości w określonej tabeli.

Proces wykonujący klauzulę EXISTS zatrzymuje się, gdy tylko znajdzie wymaganą wartość w tabeli. Z drugiej strony zapytanie IN skanuje wszystko, nawet po znalezieniu potrzebnej wartości.

W ten sam sposób należy zawsze używać NOT EXISTS zamiast NOT IN podczas wyszukiwania wartości, która nie istnieje w tabeli.

5. Użyj operatora równości (=) zamiast LIKE Operator w SQL

Do dopasowywania ciągów można używać zarówno operatorów =, jak i LIKE. Główna różnica między nimi polega na tym, że operator LIKE jest używany do dopasowywania symboli wieloznacznych, takich jak % do wyszukiwania częściowych ciągów, podczas gdy operator równości „=” szuka dokładnych dopasowań.

Jeśli musisz wybierać między tymi dwoma, zawsze preferuj operator równości („=”), ponieważ wykorzystuje on indeksowane kolumny. Dlatego jest szybszy niż klauzula LIKE.

6. Użyj klauzuli LIMIT, aby zmniejszyć wyniki wyszukiwania

Jeśli musisz zwrócić dane z wielu tabel lub kolumn, użyj klauzuli LIMIT (znanej również jako klauzula TOP), aby zmniejszyć wyniki zapytania. Jeśli istnieją tysiące kolumn lub chcesz zobaczyć, jak dane wyglądają tylko w tabelach, nie jest konieczne zwracanie wszystkich wierszy. Zamiast tego ogranicz liczbę wierszy zwracanych przez zapytanie SELECT za pomocą klauzuli LIMIT w połączeniu z nią.

7. Użyj aliasów tabel podczas wysyłania zapytań do wielu tabel

Aby uniknąć nieporozumień i zapobiec analizowaniu przez bazy danych nazw kolumn podczas wyszukiwania tabeli, do której należą, zawsze używaj aliasów tabel.

Musisz już używać nazw/aliasów tabel, jeśli masz te same nazwy kolumn w wielu tabelach, więc nie zwiększy to obciążenia pracą.

8. Unikaj prefiksów procedur zapisanych za pomocą „sp_”

Jeśli pracowałeś z procedurami składowanymi, najprawdopodobniej nazwę procedury składowanej poprzedziłaś przedrostkiem „sp_”. To nie jest najlepsze.

SQL Server rozpoczyna się od wyszukania procedur składowanych z „sp_” na początku ich nazw w głównej bazie danych przed przystąpieniem do wyszukiwania gdzie indziej.

Dlatego możesz zaoszczędzić mnóstwo czasu, nie poprzedzając procedur składowanych przedrostkiem „sp_”. Następnie, zamiast próbować zlokalizować procedurę składowaną w głównej bazie danych, serwer SQL bezpośrednio sprawdzi dbo jako właściciela procedury składowanej.

9. Zastosuj dobry styl pisania zapytań

Podczas pisania zapytań SQL należy przestrzegać najlepszych praktyk dotyczących zapytań SQL, takich jak dobre praktyki dotyczące stylów. Zwróć uwagę na poniższe zalecenia dotyczące ulepszenia stylu pisania zapytań:

  • Zawsze dodawaj komentarze do zapytań SQL. Komentarze nie tylko pomogą innym członkom zespołu lepiej zrozumieć Twoje pytania, ale także przypomną Ci, co robiłeś w przeszłości.
  • Używaj oczywistych konwencji nazewnictwa. Baza danych, tabele, nazwy kolumn, tabele tymczasowe i inne nazwy zmiennych powinny być w 100% czytelne i przejrzyste.
  • Wprowadzaj wpisy w zapytaniach, gdy tylko jest to możliwe. Zapytania wewnętrzne muszą być wcięte o jedną tabulator od lewej. Nazwy i typy kolumn w tabeli również powinny być wcięte. Wcięcia zapewniają czystszy wygląd i poprawiają czytelność zapytań, co znajduje odzwierciedlenie w najlepszych praktykach SQL Server dotyczących zapytań.

Wniosek

SQL to bardzo elastyczny język zapewniający wiele sposobów wykonywania pożądanych zadań w bazie danych. Aby Twoje aplikacje były bardziej wydajne i produktywne oraz aby uniknąć długotrwałych problemów z bazą danych, zastosuj nowoczesne najlepsze praktyki optymalizacji zapytań SQL do pisania zapytań. Te metody pomagają przyspieszyć dostrajanie wydajności w SQL, wyeliminować niepotrzebne procedury i sprawić, że cała praca będzie bardziej zwięzła i przejrzysta.

Przeczytaj również

22 sprytne przykłady indeksów SQL, które przyspieszają Twoje zapytania


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błędy, pułapki i najlepsze praktyki T-SQL – przestawianie i odwracanie

  2. Co to jest relacja jeden-do-wielu w bazie danych? Wyjaśnienie z przykładami

  3. Model bazy danych dla ankiety online. Część 3

  4. Najlepsze blogi dotyczące baz danych do obserwowania

  5. Więcej o wprowadzeniu stref czasowych w długowiecznym projekcie