sql >> Database >  >> RDS >> Mysql

Problemen om de structuur van grote query's en tabellen te optimaliseren

Je kunt 2 van de innerlijke selecties opslaan door in plaats daarvan JOIN te gebruiken, wat de zaken in beide gevallen zeker zal versnellen (genre_id = 300 en genre_id = 900 ).

SELECT  
    st.sid, st.title, st.sinopse,  
    (SELECT GROUP_CONCAT(CAST(genre_id AS CHAR)) FROM fanfiction_stories_genres WHERE sid = st.sid) as genres,  
    stats.reviews, stats.recomendacoes,  
    (SELECT GROUP_CONCAT(CAST(warning_id AS CHAR)) FROM fanfiction_stories_warnings WHERE sid = st.sid) as warnings_ids  
FROM  
    fanfiction_stories AS st  
    LEFT JOIN fanfiction_stories_stats AS stats ON st.sid = stats.sid  
    JOIN fanfiction_stories_warnings w ON st.sid = w.sid AND w.warning_id = 5
    JOIN fanfiction_stories_genres g ON st.sid = g.sid AND g.genre_id = 300
GROUP BY st.sid
ORDER BY st.sid ASC  
LIMIT 20  



  1. De huidige rowversion-waarde voor een SQL Server-database retourneren (T-SQL-voorbeeld)

  2. Parameters doorgeven aan Oracle SQL-bestand vanuit batchbestand

  3. Hoe kan ik de standaardwaarde van een veld instellen op '0000-00-00 00:00:00'?

  4. Hoe en wanneer SLEEP() correct gebruiken in MySQL?