Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wydajność zapytań programu SQL Server — wyszukiwanie indeksu klastrowego

Zgadzam się z @marc_s i @KM, że ten wspaniały projekt jest skazany na porażkę od samego początku.

Miliony godzin programistów firmy Microsoft poświęcono na zbudowanie i dostrojenie solidnego i wydajnego silnika bazy danych, ale zamierzasz to wszystko wymyślić na nowo, wpychając wszystko do niewielkiej liczby ogólnych tabel i ponownie wdrażając wszystko, co już jest w SQL Server. zaprojektowany, aby zrobić dla Ciebie.

SQL Server ma już tabele zawierające nazwy jednostek, nazwy kolumn i tak dalej. Fakt, że normalnie nie wchodzisz w bezpośrednią interakcję z tymi tabelami systemowymi, jest dobrą rzeczą:nazywa się to abstrakcją. I jest mało prawdopodobne, że implementacja tej abstrakcji wykona się lepiej niż SQL Server.

W ostatecznym rozrachunku przy twoim podejściu (a) nawet najprostsze zapytania będą potworne; oraz (b) nigdy nie zbliżysz się do optymalnej wydajności, ponieważ rezygnujesz z całej optymalizacji zapytań, którą w przeciwnym razie otrzymasz za darmo.

Nie wiedząc nic więcej o Twojej aplikacji lub wymaganiach, trudno jest udzielić jakiejkolwiek konkretnej porady. Ale sugerowałbym, że jakaś stara, dobra normalizacja poszłaby daleko. Każda dobrze zaimplementowana, nietrywialna baza danych zawiera wiele tabel; dziesięć stołów plus dziesięć stołów xtab nie powinno cię odstraszyć.

I nie bój się generowania kodu SQL jako sposobu implementacji wspólnych interfejsów w różnych tabelach. Odrobina może zajść daleko.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego poniższe zapytanie SQL Server zwraca dane z 12 miesięcy, a nie z 14 miesięcy?

  2. Wyłącz dziennik transakcji

  3. Jak uzyskać liczbę wierszy z EXEC() w SPROC TSQL?

  4. Nie można użyć UPDATE z klauzulą ​​OUTPUT, gdy na stole znajduje się wyzwalacz

  5. Czy JPA 2.0 obsługuje zmienne tabeli SQL Server?