Bu SQL sorgusunu IN ile alt sorgu kullanmamak için lütfen değiştirmem gerekiyor, bu sorgunun daha hızlı çalışmasına ihtiyacım var.sql sorgusunu Değiştir ve En İyileştir
Burada üzerinde çalıştığım sorgudur. Yaklaşık 7 milyon satır.
Bu SQL sorgusunu IN ile alt sorgu kullanmamak için lütfen değiştirmem gerekiyor, bu sorgunun daha hızlı çalışmasına ihtiyacım var.sql sorgusunu Değiştir ve En İyileştir
Burada üzerinde çalıştığım sorgudur. Yaklaşık 7 milyon satır.
Böyle bir şey - Doğru olanı sayıyorsanız emin olun (JOIN bir OUTER geçmek durumunda) ama ...
SELECT MovieID
, COUNT(*) ttl
FROM download x
JOIN download y
ON y.userid = x.userid
AND y.movieid = 995
GROUP
BY x.MovieID
ORDER
BY ttl DESC;
filtre movieId..you üzerinde doğrudan
SELECT `MovieID`, COUNT(*) AS `Count`
FROM `download`
WHERE `UserID` IN (
SELECT `UserID` FROM `download`
WHERE `MovieID` = 995
)
GROUP BY `MovieID`
ORDER BY `Count` DESC
sayesinde alt sorgu eklemek gerekmez. Bu, movieID = 995 maddesinin kullanıldığı yerde yapılabilir.
SELECT `MovieID`, COUNT(*) AS `Count`
FROM `download`
WHERE `MovieID` = 995
GROUP BY `MovieID`
ORDER BY `Count` DESC
Kullanım Exists yerine, Optimizing Subqueries with EXISTS Strategy bkz: MySQL dışından için”sorguları değerlendirir
IN outer_expr (subquery_where NEREDEN ... inner_expr SEÇ):
aşağıdaki alt sorgu karşılaştırma düşünün İçerisinde. ”Yani, ilk olarak dış ifade dış_expr öğesinin değerini alır ve alt sorgusunu çalıştırır ve ürettiği satırları yakalar.
Çok yararlı bir en iyileştirme alt sorgusu, yalnızca ilgi satırlarının inner_expr öğesinin dış_yastk'ye eşit olan içersindekiler olduğunu bildirmesidir. Bu, uygun bir eşitliğini alt sorgunun WHERE maddesine indirerek yapılır. Bu karşılaştırma bu dönüştürülür gibidir:
MEVCUT
(SELECT 1 ... im subquery_where ve outer_expr = inner_expr) dönüştürmeden sonra, MySQL satır sayısını sınırlamak için itilmiş aşağı eşitliği kullanarak alt sorguyu değerlendirirken incelemelidir.
bunu yazarak sorguyu açıklayabilirsiniz. Benim için hala çok kafa karıştırıcı –
Tarihinizden birçok sorgu gördüm ve OP ile hedefe gayet güzel geldim. Sadece dezavantaj, belki de gelecek için, kullanıcı için genişlerler. NEDEN işlerin belli bir şekilde işlediğini ve başkalarına yardım edeceklerini ve böylece başkalarına yardım edeceğini ve böylece sadece kesmeyi/yapışmayı nasıl yapacağını öğrenecekler ... Sadece yapıcı eleştiriler, ama yine, sen gönderilerle hedefte. – DRapp
Evet, adil yorum. – Strawberry