![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 18.02.2008
Сообщений: 198
|
![]()
Доброе время!
Прошу помощи. Есть две таблицы вот не полная их структура Код:
Код:
select * from client нужно по каждому клиенту из полученного списка получить информацию из таблицы MAIN о дате его последнего визита (поле main.regdate) придумал вот такой запрос Код:
Помогите его оптимизировать |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Как выглядят индексы базы? Проверял EXPLAIN PLAN?
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А refby откуда всплыло? О нем до того ни слова. И после того
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 18.02.2008
Сообщений: 198
|
![]()
нет не проверял. Я думаю это происходит из-за функции max()
Запрос построен таким образом что при выполнении основного запроса SELECT * FROM client для каждой записи выполняется подзапрос SELECT max(regdate), cid FROM main WHERE main.cid=client.id Ну как то так. не точно но принцип такой Только не пойму как это ускорить ну это не важно вообще-то refby взялся из таблицы main Вот все ее поля Код:
Это типа какой клиент кого привел... Но с этим проблем нет вообще... Последний раз редактировалось Stilet; 08.10.2015 в 10:53. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]() Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 08.10.2015 в 09:54. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 18.02.2008
Сообщений: 198
|
![]()
evg_m
Да ваш запрос самый быстрый. Сейчас придумал почти тоже самое, только вместо временной таблицы m я создал отдельный view с точно таким же запросом как у Вас. Однако моя конструкция выполняется за 960ms а Ваша за 740ms. Вот если бы еще можно было ускорить... Может в таблице client создать поле lastdate и записывать туда данные? Но тут придется делать какой-то алгоритм актуализации. Потому как клиент может записаться, в поле client.lastdate попадет значение, а клиент потом выпишется и не придет. Есть идеи? Пока пользуюсь Вашим вариантом. Спасибо большое |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
попробуйте создать (если их нет, конечно)
индексы в таблице MAIN по полям индекс по cid индекс по regdate должно помочь. |
![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 18.02.2008
Сообщений: 198
|
![]() Цитата:
Ув. STILET, Вы наверное это имели в веду в своем первом посте. Я не понял сразу. Спасибо evg_m, еще раз спасибо за поправленный запрос Тему можно закрывать |
|
![]() |
![]() |
![]() |
#9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Думал ты индексы создал правильные.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 07.05.2015
Сообщений: 12
|
![]()
Какое время выполнения запроса?
Какая именно СУБД? Где сервер (хостинг, локалхост) ЗЫ: уже много раз написали. реально зайди в структуру проверь индексы. Первая мысль об этом. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Очень долго выполняется curl + https | 7in | PHP | 2 | 17.07.2015 11:21 |
Долго выполняется MySQL запрос | SeRhy | SQL, базы данных | 2 | 13.06.2012 22:40 |
ADO-MS SQL Не выполняется запрос SELECT | Dj_SheLL | Помощь студентам | 10 | 23.11.2010 14:17 |
Очень долго стартует железо | Pirotexnik | Компьютерное железо | 0 | 29.09.2010 20:14 |
Не выполняется запрос в SQL | ivp88 | БД в Delphi | 5 | 17.01.2008 10:30 |