|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.08.2015, 02:13 | #1 |
Регистрация: 16.06.2012
Сообщений: 7
|
Кривой запрос
В общем проблема как всегда начинается когда на сайте появляется много данных, да ещё и запросы кривые.
Помогаю одному человеку, но, что то застрял на одном запросе. Код:
записей в категории 2 где-то около полутора миллионов, вот и буксует. помогите пожалуйста кто чем может ) |
03.08.2015, 07:33 | #2 | |
Форумчанин
Регистрация: 27.01.2014
Сообщений: 115
|
Цитата:
|
|
03.08.2015, 07:47 | #3 |
Регистрация: 16.06.2012
Сообщений: 7
|
вот:
Код:
|
03.08.2015, 08:01 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Если LIMIT заремить тормоза будут?
Как выглядит EXPLAIN PLAN?
I'm learning to live...
|
03.08.2015, 08:17 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Наводка для решения проблемы
http://habrahabr.ru/post/44608/
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
03.08.2015, 08:25 | #6 | |
Регистрация: 16.06.2012
Сообщений: 7
|
да, тормоза остаются
вот Цитата:
Последний раз редактировалось Stilet; 03.08.2015 в 09:57. |
|
03.08.2015, 08:33 | #7 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
03.08.2015, 09:18 | #8 |
Форумчанин
Регистрация: 27.01.2014
Сообщений: 115
|
Замените все подзапросы на join'ы, по логике выполнения происходит следующее:
для каждой записи, коих 29 штук, вы выполняете подзапрос с поиском по id, т.е. вы выполняете 29 запросов where по большой таблице. В JOIN вы выполните это всё один раз, так как вы объедените две таблицы по тому же ключу выполнив тот же where один раз сразу для 29 записей. Кстати, ради интереса, каково время выполнения запроса, если основная таблица запроса - категории, а таблица для подзапросов - news_news? что-то типа select c.Name Category, (select n.Name from news_news n where n.catedoryId = c.Id) [Name] From categories c я думаю что намного быстрее Последний раз редактировалось Akeloya; 03.08.2015 в 09:24. Причина: добавил вопрос про перестановку таблиц |
03.08.2015, 09:59 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
ИМХО структура базы не продумана до конца.
I'm learning to live...
|
|
03.08.2015, 10:19 | #10 |
Форумчанин
Регистрация: 27.01.2014
Сообщений: 115
|
Кстати, в подзапросе нужно указывать top 1, иначе получается, что при пометке новостей парочкой категорий должна быть ошибка, если для одной записи новости в подзапросе будет возвращено 2 категории
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Растеризация кривой Безье. | Braun1408 | Помощь студентам | 4 | 06.04.2013 18:01 |
Построение особой кривой | K.A.T.A.T-94 | Помощь студентам | 2 | 26.03.2012 11:07 |
Кривой synapse? | chikaga | Работа с сетью в Delphi | 2 | 15.12.2010 12:03 |
Кривой макрос | Евгений К. | Microsoft Office Excel | 1 | 24.08.2010 18:33 |
Кривой код | Slimbr | Помощь студентам | 0 | 10.12.2009 18:13 |