Я долго искал, как сделать запрос, подобный этому, но использую индекс.
SELECT * FROM aliens_tmp
WHERE creator != 'a'
AND COUNTRY = 'UK'
ORDER BY id DESC LIMIT 0, 10
Какой бы индекс я ни создал, он не получит хит из-за столкновения! = С включеннымприрода индексов.
Так что я подумал о том, чтобы сделать минус, где я делаю что-то вроде
SELECT * FROM aliens_tmp
WHERE COUNTRY = 'UK
MINUS
SELECT * FROM aliens_tmp
WHERE CREATOR = 'a'
ORDER BY id DESC LIMIT 0, 10
... но МИНУС не существует.Поэтому я посмотрел и решил, что могу использовать старый трюк, упомянутый в http://www.bitbybit.dk/carsten/blog/?p=71, который кратко равен
SELECT DISTINCT a.member_id, a.name
FROM a LEFT JOIN b USING (member_id, name)
WHERE b.member_id IS NULL
, но это не помогает мне с первоначальной целью сделать МИНУС при сохранении использованияиндекса, так как любое соединение с моей собственной таблицей все еще должно исключить моего создателя, что вызывает промах из-за исключить Любые идеи?