2013-02-21 2 views
0

У меня есть часть кода MySQL, которая ищет через довольно длинную базу данных mysql. Когда это выполняется несколько раз, это занимает много времени, хотя мне нужно только от кода, чтобы проверить наличие хотя бы одной записи. Можно ли инструктировать код mysql прекратить поиск после нахождения одной строки? Благодарю.Остановка запроса MySQL после первой строки

+2

Добавить 'LIMIT 1 'в запрос. – jeroen

+1

Что не так с 'LIMIT 1'? – Rikesh

+0

Не делает поиск короче. – user1784397

ответ

3

Попробуйте LIMIT 1 в конце вашего запроса.

+0

Это не делает поиск короче любыми средствами, на самом деле это иногда делает его длиннее. Предел 1 просто заставляет код возвращать 1 строку, а не только искать ее. – user1784397

+0

Вся цель LIMIT состоит в том, чтобы предотвратить извлечение ненужных ресурсов. Это то же самое, что и WHERE, и никогда не будет просто вырезать всю таблицу, чтобы просто извлечь одну строку. Это наивное предположение. – 2013-02-21 12:43:31

+0

К сожалению, таймер на PHPMyAdmin не согласен с вами. LIMIT не улучшает время, необходимое для получения результата. – user1784397

0

Если вы пытаетесь найти только одну вещь, то должен быть связан с ней первичный ключ. поэтому в запросе вы можете включить somethhere в where where, который принесет только один результат. что-то вроде этого

select * from students where id='123' 

как первичные ключи являются уникальным ключом, так что не будет никакого дублирования и только один поиск будет сделано.

0
SELECT * FROM tablename LIMIT 1 OFFSET 0 
  • LIMIT установит максимальные элементы, которые вы хотите назад
  • OFFSET позволяет вам указать начальную точку, чтобы начать свой запрос

Объединение LIMIT и OFFSET дает очень точный контроль Fetching тонн строк базы данных по нескольким сеансам.

Или использовать более простую 2-параметрическую функцию LIMIT (такую ​​же, как LIMIT, OFFSET):

SELECT * FROM tablename LIMIT 1, 0 
Смежные вопросы