Cóż ...
- pierwsze masz sprawdzanie składni, a następnie generowania drzewa wyrażenie - na tym etapie można również sprawdzić, czy elementy istnieją i „wyrównać” (tj pola nie istnieją WEWNĄTRZ stołu). To jest pierwszy krok - każdy błąd tutaj, po prostu powiedz sprzedawcy, aby stał się prawdziwy.
- Potem masz ... analizę. Zapytanie SQL różni się od programu tym, że nie mówi JAK coś zrobić, tylko CO WYNIKU. Logika oparta na zestawie. Dostajesz więc analizator zapytań (w zależności od produktu od złego do dobrego - najgorsze wyrocznia Oracle, najbardziej wrażliwe DB2 nawet mierzące prędkość dysku), aby zdecydować, jak najlepiej podejść do tego wyniku. To naprawdę skomplikowana bestia - może próbować dziesiątek lub setek podejść, aby znaleźć taki, który uważa za najszybszy (oparty na kosztach, w zasadzie niektóre statystyki).
- Następnie zostanie wykonany.
Analizator zapytań, nawiasem mówiąc, jest tam, gdzie widać ogromne różnice. Nie jestem pewien co do MySQL - SQL Server (Microsoft) świeci, że nie ma najlepszego (ale jeden z dobrych), ale ma naprawdę ładne narzędzia wizualne do POKAŻ planu kwerend, porównaj szacunki analizatora do rzeczywiste potrzeby (jeśli różnią się zbytnio statystykami tabeli mogą być wyłączone, więc analizator ZAUWAŻY, że duży stół jest mały). Przedstawiają to ładnie wizualnie.
DB2 od dawna ma świetny optymalizator, mierząc - jak już wspomniałem - prędkość dysku, aby go oszacować. Oracle od dawna "od lewej do prawej" (brak prawdziwej analizy) i podchodził do wskazówek użytkownika (podejście "crap"). Myślę, że MySQL również był BARDZO prymitywny - nie jestem pewien, gdzie to jest teraz.
Format tabeli w bazie danych itp. - to naprawdę coś, czego nie powinno się obchodzić. Jest to udokumentowane (wyraźnie, szczególnie w przypadku bazy danych o otwartym kodzie źródłowym), ale dlaczego powinno Cię to obchodzić? Wykonałem pracę SQL przez prawie 15 lat i nigdy nie miałem takiej potrzeby. Dotyczy to również wykonywania całkiem wysokiej jakości prac w niektórych obszarach. O ile nie spróbujesz zbudować narzędzia do naprawy bazy danych .... nie ma sensu się martwić.
To wielkie pytanie! –
Nie jest to odpowiedź per se, ale tak działa na wysokim poziomie w Oracle. http://www.idevelopment.info/data/Oracle/DBA_tips/Tuning/TUNING_10.shtml – JavaRocky
Czy możesz podać konkretny produkt, który zamierzasz? SQL Server, MySQL, Oracle, itp? –