Пример структуры таблицы, в этой таблице хранится запись заказов на вызовы такси, сделанные пользователями:
id bigint NO PRI auto_increment
create_time bigint NO "" ""
deal_time bigint NO "" ""
destination varchar(35) NO "" ""
driver_id bigint NO MUL ""
order_status int NO MUL ""
origin varchar(35) NO "" ""
reactive_time bigint NO "" ""
user_id bigint NO MUL ""
amount decimal(10,0) NO "" ""
Этот оператор SQL предназначен для запроса записей о поездках пользователя, но его нельзя запросить, если статус заказа 3
, потому что это означает, что он был удален пользователем.
select *
from order_record
where id > (select id from order_record where user_id = 100100 and order_status != 3 limit 1000,1)
and user_id = 100100
and order_status != 3
order by create_time desc limit 50
объяснение :
Теперь у меня есть два вопроса:
- Почему знак неравенства не вызвал полное сканирование таблицы?
- Есть ли лучший способ заменить знак неравенства?