Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
2 / 2 / 2
Регистрация: 04.06.2012
Сообщений: 99

Использование LIMIT из соображений быстродействия

15.04.2019, 04:12. Показов 1166. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть довольно большая база данных, из которой я делаю выборку через WHERE LIKE, при чём я точно знаю, что результатом выборки будет либо 1, либо 0 строк. Есть ли смысл указывать LIMIT 1 из соображений быстродействия?

Где-то давно вычитал, что в таком случае лучше указать лимит, чтобы не доводить поиск до конца базы данных в случае нахождения нужной строки где-то в начале. Не могу нагуглить эту информацию. Это правда? По логике да, но по факту есть ли реальный прирост, если БД, к примеру, на 300 тыс строк?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.04.2019, 04:12
Ответы с готовыми решениями:

Правильное использование Limit
Привет, хочу использовать Limit в пагинации страниц, и вот собственно вопрос, можно ли использовать $query = 'SELECT * FROM guestbook LIMIT...

Из каких соображений выбран размер байта?
Почему не 1 бит - минимально адремсуемая ячейка и не 96 бит? Почему именно 8?

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

6
19 / 17 / 6
Регистрация: 18.09.2015
Сообщений: 86
15.04.2019, 04:33
С точки зрения производительности, LIMIT работает очень быстро.
Однако использование больших величин смещения может привести к деградации производительности.
Например, запрос:

SQL
1
SELECT * FROM users ORDER BY id DESC LIMIT 10
будет работать значительно быстрее, чем запрос:

SQL
1
SELECT * FROM users ORDER BY id DESC LIMIT 9999, 10
Во втором случае MySQL пропустит 10 тыс. строк, чтобы показать всего 10.

Не рекомендуется использовать LIMIT 1 при запросе с критериями фильтрации, которые противоречат либо первичному ключу, либо уникальному ограничению.
Первичный ключ или уникальное ограничение означает, что в таблице есть только одна строка/запись с этим значением, только одна строка/запись когда-либо будет возвращена.
Это противоречиво иметь LIMIT 1 в первичном ключе/уникальном поле.
0
2 / 2 / 2
Регистрация: 04.06.2012
Сообщений: 99
15.04.2019, 14:17  [ТС]
Цитата Сообщение от Complex138 Посмотреть сообщение
Во втором случае MySQL пропустит 10 тыс. строк, чтобы показать всего 10.
Где-то я это уже видел
Цитата Сообщение от Complex138 Посмотреть сообщение
Это противоречиво иметь LIMIT 1 в первичном ключе/уникальном поле.
То есть, нет смысла писать так:
SQL
1
SELECT * FROM TABLE WHERE id = 1 LIMIT 1;
но есть смысл писать так:
SQL
1
SELECT * FROM TABLE WHERE text LIKE '%string%' LIMIT 1;
(даже если я знаю, что string в таблице всего одно? Я верно понял?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
15.04.2019, 14:34
Если пошла речь о быстродействии, то LIKE '%blahblahblah' при 300к строк куда большая проблема, чем LIMIT. В mysql есть FULLTEXT индексы, для этого больше подходящие.
0
2 / 2 / 2
Регистрация: 04.06.2012
Сообщений: 99
15.04.2019, 15:26  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Если пошла речь о быстродействии, то LIKE '%blahblahblah' при 300к строк куда большая проблема, чем LIMIT. В mysql есть FULLTEXT индексы, для этого больше подходящие.
Это лишь пример. Суть вопроса в том, стоит ли использовать LIMIT 1 при заведомо одном результате, если выборка не по уникальному полю??
0
1310 / 1002 / 232
Регистрация: 01.10.2018
Сообщений: 3,899
15.04.2019, 16:02
Лучший ответ Сообщение было отмечено LawrenceRUS как решение

Решение

Зависит от индексации поля, по которому идет отбор.

Добавлено через 1 минуту
Для WHERE LIKE лучше использовать.

Название темы провокационное Так и хочется исправить на "Неиспользование LIMIT из соображений быстродействия".
1
2 / 2 / 2
Регистрация: 04.06.2012
Сообщений: 99
15.04.2019, 20:42  [ТС]
Спасибо)

Да, понимаю, что лучше не использовать. Но есть тонкий (для меня) момент, когда лучше использовать. И теперь я его кажись понял)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.04.2019, 20:42
Помогаю со студенческими работами здесь

Сравнение быстродействия c# и c++
уверены? может сравним быстродействие С++ 6.0 c .NET языками? а? тормознутость прог на этой платформе весьма очевидна! запуск в...

Увеличение быстродействия
using System; class Entrypiont { static void Main() { string Input = Console.ReadLine().Split(' '); ...

Повышение быстродействия
Здравствуйте! ребята подскажите, 1с есть, база файловая, и мм от чего зависит как быстро разворачивается 1с на клиенте? возможно ли это...

Увеличение быстродействия
Дорогие форумчане, существует некоторая проблема быстродействия программы. Как увеличить быстродействие? Какие из способов существуют?

Параметры быстродействия
Доброе время суток. Подскажите, что можно сделать. При запуске системы выходит окно "параметры быстродействия" и пишет что файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru