2016-05-31 3 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

У вас будет больше отличных ответов, если вы напишете все на простом английском языке ... т.е. купон => купон. Это намного легче понять. Вы также захотите добавить дополнительную информацию - перечислите все индексы со всеми полями и уникальностью и количеством строк каждой таблицы. –

ответ

2

Очевидный индексов для запроса являются:

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

Однако я не уверен, что эти показатели будут большим подспорьем для т его запрос. Запрос довольно сложный и могут быть альтернативные способы выражения логики.

Смежные вопросы