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

MySQL - SELECT WHERE pole IN (podzapytanie) - Bardzo wolne dlaczego?

Podzapytanie jest uruchamiane dla każdego wiersza, ponieważ jest to zapytanie skorelowane. Skorelowane zapytanie można przekształcić w nieskorelowane zapytanie, wybierając wszystko z podzapytania, na przykład:

SELECT * FROM
(
    SELECT relevant_field
    FROM some_table
    GROUP BY relevant_field
    HAVING COUNT(*) > 1
) AS subquery

Ostateczne zapytanie wyglądałoby tak:

SELECT *
FROM some_table
WHERE relevant_field IN
(
    SELECT * FROM
    (
        SELECT relevant_field
        FROM some_table
        GROUP BY relevant_field
        HAVING COUNT(*) > 1
    ) AS subquery
)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Preferowany silnik MySQL – MyISAM lub InnoDB

  2. Częste pytania i odpowiedzi dotyczące wywiadu MySQL dla nowszych i doświadczonych

  3. Zapytanie MySQL, aby uzyskać najlepiej sprzedające się produkty

  4. Użyj relacyjnych baz danych MySQL na Ubuntu 9.04 (Jaunty)

  5. Całkowita liczba blokad przekracza rozmiar tabeli blokad