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

MySQL-Wydajność przy zamawianiu na kolumnie obliczeniowej

Właściwie nie możesz zoptymalizować tego zapytania.

Sortujesz wynik przy użyciu obliczonej wartości, więc nie możesz użyć indeksu. Jeśli używasz explain możesz zobaczyć, jak Twoje zapytanie jest wykonywane i using temporary będzie obecny w extra kolumna, co oznacza, że ​​wszystkie dane z zapytania są przechowywane w tabeli tymczasowej, w której odbywa się porządkowanie.

Nie ma znaczenia, czy chcesz tylko pierwszych 50 dopasowań w zapytaniu, najpierw musisz pobrać wszystkie dane, zrzucić je do tabeli tymczasowej, posortować wyniki w tej tabeli, a następnie zwrócić ci pierwsze 50 dopasowań.

Jak można przypuszczać, jest to operacja czasochłonna i pochłaniająca pamięć.

Więc najlepszą opcją jest umieszczenie indeksu w tabeli, aby pobrać wszystkie potrzebne wiersze tak szybko, jak to możliwe, a następnie przetworzyć je za pomocą php aby uzyskać potrzebne dane.

Przy okazji, spójrz na przewodnik po optymalizacji MySQL .



  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 znaleźć odrębne kolumny w zagnieżdżonym podzapytaniu w SQL?

  2. Jak zaktualizować bazę danych osCommerce z wersji 2.2 do wersji 2.3?

  3. Nie można załadować wtyczki uwierzytelniającej „caching_sha2_password” w Netbean

  4. Zadeklaruj zmienną wyzwalającą MySQL

  5. mysql:jak zapisać ORDER BY po LEFT JOIN bez zmiany kolejności?