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

Indeks MySQL dla MIN i MAX

SELECT MIN(b), MAX(b) FROM tbl WHERE a = 12;

kocha

INDEX(a, b)

obie kolumny, w tej kolejności.

Zapytanie szuka w indeksie dla a = 12 , chwyta pierwszy (a,b) sparuj, aby uzyskać MIN(b) i chwyta ostatnią parę, aby uzyskać MAX(b) .

Stwierdzenie o „zastępowaniu stałą” jest mylące, ponieważ zagłębia się w szczegóły tego, jak najpierw dowiaduje się, jak wykonać zapytanie (co zdarza się, aby uzyskać minimum i maksimum), a następnie przechodzi do wykonania tego, co pozostało z zapytanie (nic nie zostało).

Mówiąc bardziej ogólnie, optymalny indeks to zazwyczaj taki, który zaczyna się od wszystkich WHERE kolumny w porównaniu do stałych z = . Potem robi się skomplikowana, więc pozwól, że dam kolejną wskazówkę:

Indeks „pokrywający” to taki, który zawiera wszystkie kolumny wymienione w SELECT (a i b w moim przykładzie).

Przepraszam, wydaje mi się, że nie jest to bardziej zrozumiałe niż instrukcja.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać CakePHP bake, aby znaleźć mysql.sock i rozpoznać MySQL podczas korzystania z MAMP na Mac OSX?

  2. Znacznik czasu MySQL tylko podczas tworzenia

  3. SQL QUERY wielokrotne wyszukiwanie w jednym wierszu, aby znaleźć dane z innego wiersza w tej samej tabeli

  4. Jak celowo zablokować wiersz MySQL tak, że nawet SELECT zwróci błąd?

  5. Kiedy powinienem używać transakcji w moich zapytaniach?