Предполагая MySQL
, это:
SELECT *
FROM mytable
WHERE flagged = 'F'
ORDER BY
flagged ASC, id ASC
LIMIT 1
будет немного менее эффективным в InnoDB
и такой же эффективностью в MyISAM
, если у вас есть индекс для (flagged, id)
.
InnoDB
таблицы сгруппированы в PRIMARY KEY
, поэтому выбор первой записи в id
не требует поиска таблицы.
В MyISAM
таблицы организованы в кучу, поэтому индекс, используемый для контроля PRIMARY KEY
, хранится отдельно от таблицы.
Обратите внимание, что flagged
в предложении ORDER BY
может показаться излишним, но требуется MySQL
для выбора правильного индекса.
Кроме того, составной индекс должен быть на (flagged, id)
даже в InnoDB
(что подразумевает включение PRIMARY KEY
в каждый индекс).