sql >> Databasteknik >  >> RDS >> Mysql

Varför är UNION-frågor så långsamma i MySQL?

Inkluderar dina frågor ORDER BY … LIMIT klausuler?

Om du lägger en ORDER BY … LIMIT efter en UNION , tillämpas den på hela UNION , och index kan inte användas i det här fallet.

Om id är en primärnyckel, kommer denna fråga att vara omedelbar:

SELECT  *
FROM    table
ORDER BY id
LIMIT 1

, men den här kommer inte:

SELECT  *
FROM    table
UNION ALL
SELECT  *
FROM    table
ORDER BY id
LIMIT 1

Detta verkar också bero på ORDER BY . Att sortera en mindre uppsättning är snabbare än en större.

Behöver du att den resulterande uppsättningen sorteras?

Om inte, ta bara bort den sista ORDER BY .



  1. Hur ansluter man en C# Windows Mobile 6.5-app till en Postgres-databas?

  2. Hur man konverterar en sträng till ett datum/tid i SQL Server med CAST()

  3. Konstigt beteende i Postgresql

  4. MySQL:Får permanent väntar på tabellmetadatalås