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

Używanie IN z podzapytaniem nie używa indeksu

Możesz zobaczyć odpowiedzi na to pytanie Będziesz miał dobre pomysły.

Cytuję z kilku odpowiedzi

Krótko, spróbuj wymusić indeks:

SELECT *
FROM mapping_channel_fqdn_virtual_host FORCE INDEX (name of the index you want to use)
WHERE (mapping_channel_fqdn_virtual_host.id IN (1,2,3,4,5,6,7,8,9,10));

Lub zamiast tego użyj JOIN i zapoznaj się z wyjaśnieniem

SELECT * FROM mapping_channel_fqdn_virtual_host mcf
JOIN (select max(id) as ids from mapping_channel_fqdn_virtual_host group by channel_id, fqdn_virtual_host_id)) AS mcfv 
ON mcf.id = mcfv.ids;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obsługa bardzo dużych danych za pomocą mysql

  2. Awaria łącza komunikacyjnego - ostatnim pomyślnie odebranym pakietem z serwera był

  3. Wiersze liczą się bez wyraźnych

  4. Lepiej użyć daty zerowej „0000-00-00 00:00:00” lub NULL w MySQL?

  5. Obliczona wartość pola na podstawie innej kolumny podczas wstawiania