2016-05-31 65 views
0
SELECT ID,uye,kazanilacakmiktar FROM kupon WHERE durum=0 AND ID IN (
select c.kupon 
from kuponbahis c join 
    bahis b 
    on ((b.sonuc = c.secim) OR (b.sonuc=5)) and b.ID = c.bahis 
group by c.kupon 
having sum(c.bahis = '999') > 0 and 
     count(*) = (SELECT COUNT(*) FROM kuponbahis WHERE kupon = c.kupon)); 

我有這樣的查詢。我有索引kupon.ID, kupon.uye, kupon.kazanilacakmiktar, kuponbahis.bahis, kuponbahis.secim但它仍然有一個重要的運行時間。哪些列在MySQL中編制索引?

我錯過了什麼,我做錯了什麼?

+1

您可能想要提供有關樣本數據和期望結果的其他問題。可能有更好的方法來編寫查詢。 –

+0

如果你用簡單的英語寫出所有東西,你會有更多的敏銳的反應...即kupon =>優惠券。理解起來要容易得多。您需要添加更多信息 - 列出所有字段和唯一性的索引以及每個表的行數。 –

回答

2

用於查詢的明顯指標是:

  • kupon(durum, id)
  • kuponbahis(kupon)
  • bahis(id, sonuc)

不過,我不相信,這些指標將是T A大的幫助他的查詢查詢相當複雜,可能有其他表達邏輯的方法。