Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как ускорить запрос? / 11 сообщений из 11, страница 1 из 1
06.11.2019, 13:03
    #39885713
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить запрос?
Здравствуйте!
MySQL 5.6
Запрос к БД выполняется от 130 до 150 сек.
Использую представление MySQL с таким запросом:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT
ir.id, ir.code_inquiry, ir.initiator_podr_name, ir.initiator_sl_name, ir.initiator_sotr_famio, ir.initiator_sotr_dolg, 
  ir.initiator_sotr_rank, ir.initiator_sotr_phone_mobile, ir.initiator_sotr_phone_work, ir.initiator_sotr_phone_temp,
  ir.initiator_type, ir.requist_number, ir.requisit_date, ir.requisit_foundation, ir.requisit_numberin,
  CONCAT_WS('-', ir.frame_dou_part_1, ir.frame_part_2, ir.frame_part_3, ir.frame_part_4, ir.frame_part_5) AS 'frame',
  ir.regime_type, 
  inquiry_lico.lico_fam as 'lico_fam',
  inquiry_lico.lico_ima as 'lico_ima',
  inquiry_lico.lico_otc as 'lico_otc',
  CONCAT_WS('.', inquiry_lico.lico_drd, inquiry_lico.lico_drm, inquiry_lico.lico_dry) as 'drlico',
  inquiry_lico.legal_lico_name,
  inquiry_lico.legal_lico_unn, inquiry_lico.adres_district, inquiry_lico.adres_city, inquiry_lico.adres_street, inquiry_lico.adres_home, inquiry_lico.adres_corpus, inquiry_lico.adres_flat,
s.txt, s1.fam as 'fio', inquiry_user.dvi, inquiry_user.dvi as dvis, inquiry_user.dvi as dvipo, inquiry_user.timeQ
FROM inquiry_requisit ir
inner JOIN inquiry_lico ON ir.code_inquiry=inquiry_lico.code_inquiry
inner JOIN inquiry_user ON ir.code_inquiry=inquiry_user.code_inquiry
inner JOIN a_cp1251.sprpodrazdelenie s ON s.code=inquiry_user.code_podr 
inner  JOIN a_cp1251.sotrudniki s1 ON s1.code=inquiry_user.code_sotr




Если делать выборку только из 1 таблицы то выбирается примерно 136000 записей, и делается он быстро, но когда я добавляю Join-ы то мне приходит свыше 3 000 000 записей.
Пробовал делать вложенными запросами - скорость около 30 сек. - но тогда не работает представление.
...
Рейтинг: 0 / 0
06.11.2019, 13:12
    #39885721
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить запрос?
Три миллиона записей, навскидку по килобайту, т.е. где-то 3 гига данных... прочитать три гига с диска и отдать на клиента за 30 секунд - это вполне нормальный результат. Да и за 150 - вполне в рамках допустимого.

Так что ищи оптимизацию в уменьшении результирующего набора. Ну нахрена тебе 3кк записей? ни посмотреть, ни распечатать...
...
Рейтинг: 0 / 0
06.11.2019, 13:21
    #39885725
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить запрос?
Я это представление потом использую в Yii в GridView. Данные выгружаются в таблицу и я использую фильтры
...
Рейтинг: 0 / 0
06.11.2019, 13:23
    #39885726
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить запрос?
В принципе мне нужно организовать быстрый поиск по таблице
...
Рейтинг: 0 / 0
06.11.2019, 13:56
    #39885740
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить запрос?
Вот и передавайте на сервер запрос с условиями фильтрации, а он пусть вернёт только то, что реально нужно. Небось грид, приняв эти гектары данных, тоже впадает в состояние, близкое к коматозному? особенно если начать там что-то фильтровать и пересортировывать...
...
Рейтинг: 0 / 0
06.11.2019, 14:40
    #39885779
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить запрос?
Born
я использую фильтры
Что за фильтры? Это SQL-механизм или что-то другое?
...
Рейтинг: 0 / 0
06.11.2019, 14:56
    #39885799
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить запрос?
Это обычные поля, после ввода значения в которые опять идёт запрос к БД
Правда когда инфа закешируется то запрос делается быстро
...
Рейтинг: 0 / 0
06.11.2019, 14:56
    #39885800
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить запрос?
Born
опять идёт запрос к БД
Вот этот запрос и показывайте.
...
Рейтинг: 0 / 0
07.11.2019, 12:47
    #39886159
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить запрос?
Born,

У тебя в запросе ВООБЩЕ НЕТ фразы WHERE, нет фильтраци, нет SARG-ов, и нет даже призрачной надежды на то, что запрос может выполняться быстро.
...
Рейтинг: 0 / 0
07.11.2019, 12:50
    #39886162
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить запрос?
авторЕсли делать выборку только из 1 таблицы то выбирается примерно 136000 записей, и делается он быстро,

Он НЕ делается бысто, просто ты ДУМАЕШЬ, что он выбирается быстро, потому что ты НЕ выбираешь все записи,
а получаешь только первые 50-100 штук.


авторно когда я добавляю Join-ы то мне приходит свыше 3 000 000 записей.
Пробовал делать вложенными запросами - скорость около 30 сек. - но тогда не работает представление.

Ты вообще для начала сделай техзадание, пойми, что тебе вообще надо выбирать...
После этого ты напишешь запрос, правильный, с теми данными, которые тебе нужны, а не со всеми,
потом отладишь приложение и сделаешь всё правильно,
И ТОЛЬКО ПОТОМ МОЖНО БУДЕТ ДУМАТЬ О ТОМ, ЧТОБЫ ЗАПРОС БЫЛ БЫ БЫСТРЫМ.
...
Рейтинг: 0 / 0
07.11.2019, 12:51
    #39886164
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить запрос?
Born
В принципе мне нужно организовать быстрый поиск по таблице


Вот в таком виде эта задача не решается.
Не возможно организовать "в принципе ... быстрый поиск по таблице"
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как ускорить запрос? / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]