Ниже приводится таблица называется list
:MySQL и Pagination
id
(Int)
user_one
(String)
user_two
(String)
Я хотел бы, чтобы сканировать для пользователя в user_one
и user_two
column
.
В ответ я хотел бы вернуть первые 100 записей и флаг, в котором говорится, что есть больше записей.
Решение # 1:
ALTER TABLE list ADD FULLTEXT KEY `full_name` (`user_one`,`user_two`);
SELECT * FROM list WHERE MATCH(user_one, user_two) AGAINST ('john');
Я считаю, что решение 1 будет работать лучше, но я не уверен, как добавить limit
из 100 и получить flag
.
Решение # 2:
SELECT * FROM list
WHERE "john" LIKE Concat(Concat('%',user_one),'%')
OR "john" LIKE Concat(Concat('%',user_two),'%')
ORDER BY id
LIMIT 50
Я думаю, что решение # 2 медленнее, и я не знаю, что это лучший способ, чтобы добавить flag
, если есть более чем 100 записей.
Последнее, если возможно, я хотел бы свести к минимуму все сканирование таблицы.
Спасибо. Неужели эти стоп сканируют «таблицу» после 101/100 'записей'? – user1107173
Без 'ORDER BY' вы получите несколько случайных строк 101/100. И вторая партия может перекрываться/пропускаться. [Больше всего в pagination_] (http://mysql.rjweb.org/doc.php/pagination). –