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

Funkcje przechowywane w Mysql i grupowe min

Nie ma gwarancji, że maks. grupowa będzie działać. W rzeczywistości MariaDB ją zepsuła, ale zapewniła ustawienie, aby ją odzyskać. Mam na myśli to:

SELECT  *
    FROM  
      ( SELECT  ...  ORDER BY ... )
    GROUP BY ...

gdzie chcesz pierwszy (lub ostatni) w każdej grupie z wewnętrznego zapytania. Problem polega na tym, że SQL może zoptymalizować tę intencję.

Grupowy kod max w dokumentach jest strasznie nieefektywny.

Aby przyspieszyć zapytanie, prawdopodobnie pomocne będzie odizolowanie Rules lub Places część klauzuli WHERE i przekształć ją w podzapytanie, które zwraca tylko KLUCZ PODSTAWOWY odpowiedniej tabeli. Następnie umieść to w JOIN ze wszystkimi stołami (w tym JOIN z powrotem do tego samego stołu). Masz już „indeks pokrywający” dla tego podzapytania, więc może to być „Korzystanie z indeksu” (w żargonie używanym przez EXPLAIN).

Czy innodb_buffer_pool_size jest ustawione na około 70% dostępnej pamięci RAM?

BIGINT zajmuje 8 bajtów; prawdopodobnie mógłbyś żyć ze MEDIUMINT UNSIGNED (0..16M). Mniejsze --> więcej pamięci podręcznej --> mniej I/O --> szybsze.

Para DOUBLE dla lat/lng zajmuje 16 bajtów. Para FLOAT zajęłaby 8 bajtów i miałaby rozdzielczość 6 stóp/2m. Lub DECIMAL(6,4) dla szerokości geograficznej i (7,4) dla długości geograficznej dla 7 bajtów i rozdzielczości 52 stóp/16m. Wystarczająco dobre dla „sklepów”, zwłaszcza, że ​​używasz „kwadratu” zamiast „kółka” do określania odległości.

Kod „znajdź najbliższy...” jest trudny do zoptymalizowania. Oto najlepsze, jakie wymyśliłem:http://mysql.rjweb.org/doc .php/latlng




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symfony2 Doctrine uruchamia SQL z pliku w CLI

  2. JSON_INSERT() – Wstaw wartości do dokumentu JSON w MySQL

  3. Pobieranie danych z MYSQL na podstawie numeru tygodnia

  4. Czy CodeIgniter Datamapper ORM obsługuje instrukcję MySQL CASE w klauzulach ORDER BY?

  5. auto inkrementacja ciągiem cyfr i liter