Ho questa domanda, che è un singolo query contenente 3 seleziona complessivamente:Riutilizzo risultati di una singola query SELECT MySQL
SELECT a
FROM tbl
WHERE b IN ((SELECT a FROM tbl WHERE b = 44))
AND NOT a IN ((SELECT a FROM tbl WHERE b = 44))
La query
SELECT a FROM table WHERE b = 44
è esattamente lo stesso, e suppongo che il database stia eseguendo questa operazione 2 volte, anche se dovrebbe essere più veloce la seconda volta a causa del caching ecc.
C'è un modo in SQL o qualcosa di specifico su MySQL che posso fare o riutilizzare il 100% dei risultati dalla prima esecuzione della query?
O altre idee su come velocizzare questa query?
Sto usando MySQL 5.7.
Works! È quasi 2x più lento del mio originale sebbene .. anche se sia a che b hanno indici. Sono i join che costano così tanto? – Niklas9
I join dovrebbero essere in genere molto più veloci rispetto all'utilizzo delle sottocubine. Puoi pubblicare la tua tabella dichiara e una SPIEGARE della query? Hai un indice che copra ENTRAMBI a e b? – Kickstart
Certo, ha creato questo elenco per la spiegazione - https://gist.github.com/Niklas9/5dd08c4d6b3b7b029365 No, indice per aeb separatamente. @Kickstart – Niklas9