Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
MySQL

Сделать запрос быстрее

18.11.2016, 23:20. Показов 1506. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть запрос Вида :
SQL
1
SELECT COUNT(user_id) FROM db_bon WHERE user_id = '11111' AND date_del > 'value'
Его суть в том, что он ищет value времени(timestep) в табл у определенного юзера большее чем текуще time() , и далее логика построена на условии кол-ва возвращаемых строк из табл от 0 и до 1(больше быть не может).
НО проблема в том , что с таким подходом для поиска происходит обход всех строк(~ 60к+) в табл, что очень долго выполняется(>2сек на каждый запрос такой).

Нужно поменять запрос так, чтоб он возращал самую последнюю вставленную строку с парамтром user_id и не продолжал дальше обход как ранее
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2016, 23:20
Ответы с готовыми решениями:

Какой запрос быстрее?
пока что это не приоритетная моя задача но все же хотелось бы услишать мнение знающих людей) как быстрее проверить на наличие в базе...

Сделать запрос к базе
Есть таблица с тремя полями: 1. id - номер строки (auto_increment) 2. idParent - id категории, для привязки одной категории к другой...

Не удается сделать запрос в БД
function News_getOne($id) { $sql = " SELECT FROM news WHERE id='$id'" ; return Sql_query($sql); } ...

6
 Аватар для zontik24
36 / 33 / 10
Регистрация: 14.06.2013
Сообщений: 432
18.11.2016, 23:49
SQL
1
SELECT MAX(user_id) FROM db_bon
0
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
19.11.2016, 00:58  [ТС]
zontik24,
такой запрос тоже будет обходить все строки, уже пробовал
SQL
1
SELECT MAX(date_del) FROM db_bon WHERE user_id = '12345'
видно по логам медленных запросов

Добавлено через 1 час 2 минуты
ошибся немного в шапке , строк около 600к
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
19.11.2016, 02:14
Лучший ответ Сообщение было отмечено rodigy как решение

Решение

Индексы есть?
SQL
1
EXPLAIN SELECT COUNT(user_id) FROM db_bon WHERE user_id = '11111' AND date_del > 'value'
что выводит?
0
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
19.11.2016, 13:37  [ТС]
Jewbacabra, индексы где нужны? в табл нет не уникальных значений , есть только поля с ид автоинкремент и CURENTTIMESTEP

Выводит:

select_type: SIMPLE
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 706777
Extra: Using where
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
19.11.2016, 13:46
Цитата Сообщение от rodigy Посмотреть сообщение
индексы где нужны?
user_id нужен
1
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
19.11.2016, 14:36  [ТС]
Jewbacabra, да теперь есть индексы, и работает без перебора.
Спасибо большое, теперь наконец то буду знать как правильно применять индексы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2016, 14:36
Помогаю со студенческими работами здесь

как сделать сложный запрос к БД
я делаю выборку из БД $type попадает обработчик через <select name="type"> <option value="0">Не...

Не могу сделать SQL-запрос в WordPress
Всем привет. Народ, помогите, как сделать запрос, если у меня сайт на WordPress? Переношу верстку на эту CMS, и столкнулся вот с такой вот...

Как правильно сделать запрос в базу?
одна бд, в ней две таблицы: 1. монтаж (id, cat,name,price,desc) пример (1, 1, name, 4400, описание) id заполняется автоматом. 2. фото...

кто сможет сделать какой-то GET-запрос?
кто может помочь создать get запрос ? php код <?php if(!defined("SUPINIT")){exit;} define('CAPTION','Бан пользователя.'); ...

Как сделать запрос к нескольким таблицам?
Доброго времени суток. У меня возник такой вопрос как можно сделать запрос сразу к нескольким таблицам. вот так я делаю к одной $insert =...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru