Может ли быть более одного «пользователя» на «объявление»? Может ли быть нуль? Если ни один, то
SELECT a.adid
FROM `adstable` AS a
WHERE a.desktopimp > 100
and a.mobileimp > 100
and a.userbal > 0.02
and a.realbal> 0.02
AND EXISTS (
SELECT *
FROM userstable
WHERE adid = a.adid
)
order by a.imptotal asc
ли или нет, что это лучший препарат, не имеют эти показатели:
userstable: INDEX(adid)
adstable: INDEX(imptotal) -- in case it is better to avoid the sort
INDEX(desktopimp) -- in case it is most selective
INDEX(mobileimp)
INDEX(userbal)
INDEX(realbal)
А «покрытие» индекс будет включать в себя все 6 колонок adstable
, которые используются в запросе. Это довольно громоздко и с сомнительным использованием.
Просьба SHOW CREATE TABLE
- это может быть полезно увидеть Datatypes, двигатель и т.д.
При построении оптимального индекса, начните с любыми столбцами по сравнению с =
. Если это позаботится обо всех WHERE
, перейдите к столбцам ORDER BY
. У вас нет этого случая, так как вы не используете =
.
http://stackoverflow.com/questions/6747359/do-indexes-speed-up-greater-than-comparison-in-mysql –
tf ............. –