我有這個查詢,它非常緩慢。例如,我可以通過避免子查詢以其他方式編寫此查詢嗎?查詢avoding subselect
而且我試着
MyIndex(kategorije_id,izdvojen,izdvojen_kad,datum)
加入綜合指數,但它doesent使用它時,我解釋這個查詢,以便在那裏,我可以用它來加快這個查詢另一個指標?
SELECT artikli.datum AS brojx, artikli.izdvojen AS i, artikli.izdvojen_kad AS ii, artikli.name
FROM artikli
WHERE artikli.izbrisan =0
AND artikli.prodano !=3
AND artikli.zavrseno =0
AND artikli.od_id !=0
AND kategorije_id
IN (18)
AND (
SELECT count(*)
FROM artikli_polja, polja
WHERE polja.id_kat = artikli.kategorije_id
AND artikli_polja.id_polja = polja.id
AND artikli_polja.id_artikal = artikli.id
AND polja.name = "godiste"
AND artikli_polja.valueInt >= "1993"
) >0
AND (
SELECT count(*)
FROM artikli_polja, polja
WHERE polja.id_kat = artikli.kategorije_id
AND artikli_polja.id_polja = polja.id
AND artikli_polja.id_artikal = artikli.id
AND polja.name = "godiste"
AND artikli_polja.valueInt <= "2000"
) >0
ORDER BY i DESC , ii DESC , brojx DESC
LIMIT 140 , 35
'Limit x offset y',隨着偏移量的增加而變慢。 – Johan
您當前的(慢)查詢將返回符合所有其他條件的artikli表格行,並且具有valueInt> ='1993'和<='2000'的artikli_polja行,即使這些條件不會在**中出現** artikli_polja排。例如,如果一行的值爲1990而另一行的值爲2010,則鏈接的artikli行將被選中。這是你想要的行爲嗎?或者,您是否希望Artikli行僅在滿足其他條件時才被選中,並且至少有一個artIfli_polja行的值爲> = 1993且<= 2000的valueInt? – UltraOne