
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.08.2013, 08:59:31
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
Написал я, как то, не в духе, запросик к MySQL подобного вида: Код: sql 1. 2. 3. 4. в самом конце запроса в WHERE я отсеиваю всё, что НЕ является кроссами (аналогами). Поле Uni - это критерий по которым записи в таблице crosses объединяются в аналоги. Собсно из-за этого условия в WHERE запрос начинает жутко тормозить, при увеличении числа записей в таблице crosses. Помогите, люди добрые, оптимизировать данный казус.... Заранее СПАСИБО! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 10:07:55
|
|||
|---|---|---|---|
Помощь в оптимизации запроса |
|||
|
#18+
aleksey_sql, перепишите на джойн и забудьте подселекты в IN() как кошмарный сон. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 10:35:33
|
|||
|---|---|---|---|
Помощь в оптимизации запроса |
|||
|
#18+
aleksey_sqlНаписал я, как то, не в духе, запросик к MySQL подобного вида: Код: sql 1. 2. 3. 4. в самом конце запроса в WHERE я отсеиваю всё, что НЕ является кроссами (аналогами). Поле Uni - это критерий по которым записи в таблице crosses объединяются в аналоги. Собсно из-за этого условия в WHERE запрос начинает жутко тормозить, при увеличении числа записей в таблице crosses. Помогите, люди добрые, оптимизировать данный казус.... Заранее СПАСИБО! У вас двойное обращение к таблице Crosses. И судя по запросу, по-моему излишне... Либо задача вообще не понятна. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Я вас правильно понял, вам этот результат нужен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 10:56:22
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
Megabytealeksey_sqlНаписал я, как то, не в духе, запросик к MySQL подобного вида: Код: sql 1. 2. 3. 4. в самом конце запроса в WHERE я отсеиваю всё, что НЕ является кроссами (аналогами). Поле Uni - это критерий по которым записи в таблице crosses объединяются в аналоги. Собсно из-за этого условия в WHERE запрос начинает жутко тормозить, при увеличении числа записей в таблице crosses. Помогите, люди добрые, оптимизировать данный казус.... Заранее СПАСИБО! У вас двойное обращение к таблице Crosses. И судя по запросу, по-моему излишне... Либо задача вообще не понятна. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Я вас правильно понял, вам этот результат нужен? Нет. Мне не такой результат нужен. Мне нужно в результате получить ВСЕ позиции из таблицы crosses, где Uni равно Uni той позиции, для который указан артикул "op525" и бренд "filtron", ну и сджоиненные с прайсами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 10:57:29
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
Arhat109aleksey_sql, перепишите на джойн и забудьте подселекты в IN() как кошмарный сон. :) с джойнами переписать проблемно для мозга) не получается) помогите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 11:19:28
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
может, так? Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 11:28:47
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
Cygapb-007может, так? Код: sql 1. 2. 3. 4. неа. не то. нужны все кроссы, у которых поле Uni равно полю Uni строки у которой article='blabla' и brand='ioio' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 11:33:07
|
|||
|---|---|---|---|
Помощь в оптимизации запроса |
|||
|
#18+
aleksey_sqlнужны все кроссы, у которых поле Uni равно полю Uni строки у которой article='blabla' и brand='ioio'Ну и? в чём затруднения? селект к1.* фром кроссы к1 джойн кроссы к2 он к1.юни=к2.юни вере к2.артикле="блабла" энд к2.брэнд="ололо" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 11:39:43
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
aleksey_sqlCygapb-007может, так? Код: sql 1. 2. 3. 4. неа. не то. нужны все кроссы, у которых поле Uni равно полю Uni строки у которой article='blabla' и brand='ioio' какие кроссы ? ты же ничего из таб.crosses в результате не "выбираешь" - нет в селекте ничего из crosses исходный запрос, так можно переделать, только это ничем не отличается от запроса Cygapb-007 , только дубли строк, возможно, появятся ... Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 11:47:37
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
aleksey_sqlCygapb-007может, так? Код: sql 1. 2. 3. 4. неа. не то. нужны все кроссы, у которых поле Uni равно полю Uni строки у которой article='blabla' и brand='ioio'Результаты запросов совпадают? тогда что именно "не то" ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 12:11:37
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
qwerty112, Да, дествительно, проверил. Ваш запрос работает. Но дело в том, что он также как и мой по времени выполняется около 3 секунд при кол-ве записей в crosses - 30 тысяч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 12:14:39
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
Cygapb-007aleksey_sqlпропущено... неа. не то. нужны все кроссы, у которых поле Uni равно полю Uni строки у которой article='blabla' и brand='ioio'Результаты запросов совпадают? тогда что именно "не то" ?? Был не прав. Ваш запрос работает быстро! Спасибо! Буду тестить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 12:19:21
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
aleksey_sqlCygapb-007пропущено... Результаты запросов совпадают? тогда что именно "не то" ?? Был не прав. Ваш запрос работает быстро! Спасибо! Буду тестить. Поспешил я. Запрос: Код: sql 1. 2. 3. 4. работает, но долго. секунды 3. А запрос: Код: sql 1. 2. 3. 4. неверно работает. не выдает кроссы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 12:24:25
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
Вроде бы написал. Работает достаточно шустро! :) Код: sql 1. 2. 3. 4. 5. по советам tanglir ! Всем огромное спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 13:15:00
|
|||
|---|---|---|---|
Помощь в оптимизации запроса |
|||
|
#18+
aleksey_sql, А зачем тут таблица prices ? для фильтрации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 13:38:59
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
miksoft, Ну я в таблице кроссов держу связки, а в таблице прайсов держу цену, кол-во и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 13:40:01
|
|||
|---|---|---|---|
Помощь в оптимизации запроса |
|||
|
#18+
aleksey_sqlmiksoft, Ну я в таблице кроссов держу связки, а в таблице прайсов держу цену, кол-во и т.д.А в запросе-то зачем ее упоминать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 14:41:05
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
miksoft, для наглядности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 15:08:03
|
|||
|---|---|---|---|
Помощь в оптимизации запроса |
|||
|
#18+
aleksey_sqlmiksoft, для наглядностиКакая же наглядность, если из нее полей не выводится? На что глядеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 15:40:35
|
|||
|---|---|---|---|
Помощь в оптимизации запроса |
|||
|
#18+
Доктор Ливси сказал "Что-то становится скушновато" и автор решил его повеселить: from crosses c1 inner join crosses c2 on c1.Uni=c2.Uni если ее выкинуть и вычесать запрос исходя из него самого, то получается вот так select crosses.*, prices where prices.IndexBrand = crosses.IndexBrand and prices.IndexArticle = crosses.IndexArticle and crosses.IndexArticle="93743424" and crosses.IndexBrand="chevrolet"; Однако для join'а специально есть кляуза using подразумевающий одинаковые идентификаторы полей адгезии. автор dev.mysql.com The USING(column_list) clause names a list of columns that must exist in both tables. If tables a and b both contain columns c1, c2, and c3, the following join compares corresponding columns from the two tables: a LEFT JOIN b USING (c1,c2,c3) То есть вместо prices.IndexBrand = crosses.IndexBrand and prices.IndexArticle = crosses.IndexArticle USING(IndexBrand, IndexArticle) Значит должно быть примерно так SELECT crosses.* FROM crosses INNER JOIN prices USING(IndexBrand, IndexArticle) WHERE crosses.IndexArticle="93743424" AND crosses.IndexBrand="chevrolet"; ПротеститЕ, расскажИте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 15:44:31
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
deblogger, не, там другая засада:) по образчику получить UNI и вытянуть все остальные детальки с тем же UNI, а уж для них вытянуть цену. Я сначала тоже не въехал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 15:48:45
|
|||
|---|---|---|---|
Помощь в оптимизации запроса |
|||
|
#18+
Существует ровно единственная реальная проблема это иерархические таблицы, то есть которые сами с собой, чих-пых. Существует вторая реальная проблема - кривое проектирование. Если не то и не другое, значит надо соображать где ядро запроса, начинать с него и наращивать и все должно получиться как максимум за 10 минут. Честно говоря мне трудно соображать глядя на цитаты которые соблаговоляют постить юзеры. Расшифровывать структуру и все остальное ради чего? В этом случае я лишь хотел отметить сакраментальное. Если в запросе только иннеры и нет возможности юзать юзинг - меняйте синтаксис на каноничный. Чтобы лишним жбан не забивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 15:58:16
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
miksoftaleksey_sqlmiksoft, для наглядностиКакая же наглядность, если из нее полей не выводится? На что глядеть? См. первый мой пост в данной теме. Там только эти поля и выводятся. Т.е. только они по сути и нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 16:02:18
|
|||
|---|---|---|---|
Помощь в оптимизации запроса |
|||
|
#18+
aleksey_sqlmiksoftпропущено... Какая же наглядность, если из нее полей не выводится? На что глядеть? См. первый мой пост в данной теме. Там только эти поля и выводятся. Т.е. только они по сути и нужны.А тут - 14647836 - нет. Это разные запросы, в т.ч. могут оказаться сильно разными и по быстродействию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2013, 16:06:37
|
|||
|---|---|---|---|
|
|||
Помощь в оптимизации запроса |
|||
|
#18+
miksoftaleksey_sqlпропущено... См. первый мой пост в данной теме. Там только эти поля и выводятся. Т.е. только они по сути и нужны.А тут - 14647836 - нет. Это разные запросы, в т.ч. могут оказаться сильно разными и по быстродействию. Тут я лишь протестировал запрос, который для меня написал пользователь tanglir , за что ему большое спасибо. Быстродействие не изменилось, после того, как я вместе c.* указал поля из таблицы prices. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1836342]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 339ms |

| 0 / 0 |
