powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / можно ли с оптимизировать этот запрос?
25 сообщений из 58, страница 2 из 3
можно ли с оптимизировать этот запрос?
    #38686332
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexnewsmiksoft,

убрал LEFT, время не изменилось, да и везде пишут что от вида JOIN скорость не зависит или они не правы? Это интересно чисто для себя.По-разному бывает. Если оптимизатор MySQL решит изменить направление выполнения JOIN-а (LEFT JOIN всегда выполняется слева направо, а JOIN - в любую сторону по выбору оптимизатора), то скорость изменится. Если в секции WHERE есть условия на "необязательную" таблицу (которая после LEFT JOIN), то после смены на просто JOIN может задействоваться другой индекс и время опять изменится.
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38686334
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexnewsmiksoft,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
+----+-------------+------------+--------+---------------------------+---------------------------+---------+-------------------+---------+---------------------------------+
| id | select_type | table      | type   | possible_keys             | key                       | key_len | ref               | rows    | Extra                           |
+----+-------------+------------+--------+---------------------------+---------------------------+---------+-------------------+---------+---------------------------------+
|  1 | PRIMARY     | <derived2> | ALL    | NULL                      | NULL                      | NULL    | NULL              | 9955416 | Using temporary; Using filesort |
|  2 | DERIVED     | d          | ALL    | NULL                      | NULL                      | NULL    | NULL              | 9955416 |                                 |
|  2 | DERIVED     | s          | ref    | idx_strategies_userver_id | idx_strategies_userver_id | 4       | lfx.d.LineItemID  |       1 |                                 |
|  2 | DERIVED     | c          | eq_ref | PRIMARY                   | PRIMARY                   | 96      | lfx.s.campaign_id |       1 | Using where                     |
+----+-------------+------------+--------+---------------------------+---------------------------+---------+-------------------+---------+---------------------------------+
4 rows in set, 65535 warnings (3 min 49.40 sec)




я вот не пойму где тут применяется мои индекс который я создал командой
Код: plsql
1.
create index index_daily_stat_by_day ON daily_stats(day);

а он тут и не применяется.
javajdbc, надеюсь, объяснит свою мысль насчет этого индекса.

А пока таки покажите SHOW CREATE TABLE по каждой таблице, если я не пропустил это выше.
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38686338
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,


так, теперь я ничего не понимаю :-)
разве `day` BETWEEN '2014-06-01' AND '2014-06-30'
не достаточно селективно?
или там все 10 млн записей призошли недавно?


Потом непонятки с експлейном, в одном експлейне
в даилы_статс есть индексы, в сругом их нет...
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38686341
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbcразве `day` BETWEEN '2014-06-01' AND '2014-06-30'
не достаточно селективно?Может и нет, это только топикстартер может сказать.
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38686342
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

спасибо что до сих пор проявляете интерес

заапдейтил файлик http://www.describe.ru/sql.txt
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38686345
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc,
за месяц набегает 10млн записей это база только одного месяца обычно запрос за квартал
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38686354
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexnews,


ок, разберемся с данными.
Допустим у вас Х млн записвй всего в таблице.
Если больше 20% из них попадает в выборку
то индексы бесполезны и будет перебор по всем Х милионам.

просто сделайте:

Код: sql
1.
2.
select count(TemplateID > 0) 
from daily_stats



Код: sql
1.
2.
3.
select count(TemplateID > 0) 
from daily_stats
where day BETWEEN '2014-06-01' AND '2014-06-30'



выдайте результат и скорость обоих запросов.


далее сделайте тоже самое (результат и скорость) для

Код: sql
1.
2.
3.
4.
select count(TemplateID > 0) 
from `daily_stats` `d`
 left join `strat` `s` on `s`.`userver_id` = `d`.`LineItemID`
where day BETWEEN '2014-06-01' AND '2014-06-30'



Код: sql
1.
2.
3.
4.
5.
6.
select count(TemplateID   > 0) 
from `daily_stats` `d`
      JOIN `camp` `c` on `c`.`id` = `s`.`campaign_id`
 left join `strat` `s` on `s`.`userver_id` = `d`.`LineItemID`
where day BETWEEN '2014-06-01' AND '2014-06-30'
   and `demand_type` = 'exchange'
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38686367
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexnewsalexnews,

это должно выглядеть так:

Код: plsql
1.
select if(NULL = 'dedicated', 'dedicated', 'newsletter')

вообще-то операция сравнения с нуллом - IS NULL, никак не обычный знак равенства

По этому поводу хочу уточнить у ТСа: вы понимаете, что в запись результата с media_type=news попадут не только те сочетания записей (d,c), которым в s будет соответствовать всё, кроме "ded", но также и все сочетания записей (d,c), которым в s не будет соответствовать вообще ничего? Вам точно именно это надо?


miksofttanglir
Код: sql
1.
select if(NULL = 'ded', 'ded', 'news')


Или уже исправили, или этот баг связан с чем-то другим. Сейчас работает исправно.у меня по-прежнему глючит (опера и фф):
http://sqlfiddle.com/#!2/d41d8/40389
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687133
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc,

Код: sql
1.
2.
3.
4.
5.
6.
7.
mysql> select count(TemplateID > 0)  from daily_stats;
+-----------------------+
| count(TemplateID > 0) |
+-----------------------+
|               9955416 |
+-----------------------+
1 row in set (0.02 sec)



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
mysql> select count(TemplateID > 0) 
    -> from daily_stats
    -> where day BETWEEN '2014-06-01' AND '2014-06-30';
+-----------------------+
| count(TemplateID > 0) |
+-----------------------+
|               9650805 |
+-----------------------+
1 row in set (2.91 sec)



Код: sql
1.
2.
3.
4.
5.
6.
7.
mysql> select count(TemplateID > 0)  from `daily_stats` `d`  left join `zf_strategies` `s` on `s`.`userver_id` = `d`.`LineItemID` where day BETWEEN '2014-06-01' AND '2014-06-30';
+-----------------------+
| count(TemplateID > 0) |
+-----------------------+
|               9650805 |
+-----------------------+
1 row in set (21.36 sec)



Код: sql
1.
2.
mysql> select count(TemplateID   > 0)  from `daily_stats` `d`       JOIN `zf_campaigns` `c` on `c`.`id` = `s`.`campaign_id`  left join `zf_strategies` `s` on `s`.`userver_id` = `d`.`LineItemID` where day BETWEEN '2014-06-01' AND '2014-06-30'    and `demand_type` = 'exchange';
ERROR 1054 (42S22): Unknown column 's.campaign_id' in 'on clause'
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687144
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tangliralexnewsalexnews,

это должно выглядеть так:

Код: plsql
1.
select if(NULL = 'dedicated', 'dedicated', 'newsletter')

вообще-то операция сравнения с нуллом - IS NULL, никак не обычный знак равенства



вроде бы в исходном коде нет сравнения с NULL?
вид такой

Код: plsql
1.
if(`s`.`media_type` = dedicated', 'dedicated', 'newsletter') `media_type`



tanglirПо этому поводу хочу уточнить у ТСа: вы понимаете, что в запись результата с media_type=news попадут не только те сочетания записей (d,c), которым в s будет соответствовать всё, кроме "ded", но также и все сочетания записей (d,c), которым в s не будет соответствовать вообще ничего? Вам точно именно это надо?


если честно то не уверен, я этот запрос вижу второй день в какой-то из дней он вдруг стал тормозить при этом ничего особенного не случилось и данные поступали как обычно. Какие возможны шаги чтобы это выяснить? на сколько я представляю интересует совпадение конечной суммы.
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687150
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexnews,

Кстати, а вы нам планы и прочее показываете с какой машины, с локальной (где не тормозит) или с сервера с реальными данными (где тормозит) ?
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687158
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftalexnews,

Кстати, а вы нам планы и прочее показываете с какой машины, с локальной (где не тормозит) или с сервера с реальными данными (где тормозит) ?

локальная, полная копия дампа базы за исключением что взяты данные за месяц
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687166
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexnewsmiksoftalexnews,

Кстати, а вы нам планы и прочее показываете с какой машины, с локальной (где не тормозит) или с сервера с реальными данными (где тормозит) ?

локальная, полная копия дампа базы за исключением что взяты данные за месяцТогда проверьте планы и результаты SHOW CREATE TABLE (которых мы так и не увидели) с сервером.

Да и данные использовать лучше все. От этого меняется селективность условий и могут измениться планы запросов.
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687173
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

я же вроде бы дал планы вот тут http://www.describe.ru/sql.txt или перенести все на форум а потом просить удалить?
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687174
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,
я могу вам написать письмо лично? мне очень важно решить эту проблему
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687219
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexnewsmiksoft,

я же вроде бы дал планы вот тут http://www.describe.ru/sql.txt или перенести все на форум а потом просить удалить?Вы файлик пополняете? я как-то не догадался второй раз туда посмотреть.
В принципе как хотите, только тогда уведомляйте об изменениях.
alexnewsmiksoft,
я могу вам написать письмо лично? мне очень важно решить эту проблемуТехнически можете, но особого смысла не вижу. Лучше решать задачу в рамках форума.
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687233
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftalexnewsmiksoft,

я же вроде бы дал планы вот тут http://www.describe.ru/sql.txt или перенести все на форум а потом просить удалить?Вы файлик пополняете? я как-то не догадался второй раз туда посмотреть.
В принципе как хотите, только тогда уведомляйте об изменениях.

да я обновил файлик
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687240
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexnewsвроде бы в исходном коде нет сравнения с NULL?
вид такой
Код: plsql
1.
if(`s`.`media_type` = 'dedicated', 'dedicated', 'newsletter') `media_type`

выделенное как раз и может оказаться нуллом в силу лефтджойна
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687243
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tangliralexnewsвроде бы в исходном коде нет сравнения с NULL?
вид такой
Код: plsql
1.
if(`s`.`media_type` = 'dedicated', 'dedicated', 'newsletter') `media_type`


выделенное как раз и может оказаться нуллом в силу лефтджойнаНе может. Я выше уже показывал, что лефтджойн в данном запросе вырождается в просто джойн.
И в самой таблице это поле NOT NULL.
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687250
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofttanglirпропущено...
выделенное как раз и может оказаться нуллом в силу лефтджойнаНе может. Я выше уже показывал, что лефтджойн в данном запросе вырождается в просто джойн.
И в самой таблице это поле NOT NULL.
Я пробовал просто джоин результат тот же
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687272
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftНе может. Я выше уже показывал, что лефтджойн в данном запросе вырождается в просто джойн.лефтджойн с c - да, вырождается, т.к. на c.demand_type есть фильтр
лефтджойн с s - с чего бы вдруг? фильтра на поля этой таблицы в запросе нет
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687281
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirmiksoftНе может. Я выше уже показывал, что лефтджойн в данном запросе вырождается в просто джойн.лефтджойн с c - да, вырождается, т.к. на c.demand_type есть фильтр
лефтджойн с s - с чего бы вдруг? фильтра на поля этой таблицы в запросе нет
нда согласен, не подумал
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687284
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите, пожалуйста что не правильно в этом запросе?
Код: plsql
1.
2.
mysql> select count(TemplateID   > 0)  from `daily_stats` `d`       JOIN `zf_campaigns` `c` on `c`.`id` = `s`.`campaign_id`  left join `zf_strategies` `s` on `s`.`userver_id` = `d`.`LineItemID` where day BETWEEN '2014-06-01' AND '2014-06-30'    and `demand_type` = 'exchange';
ERROR 1054 (42S22): Unknown column 's.campaign_id' in 'on clause'
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687286
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft> Не может <...>
tanglir> <...>с чего бы вдруг? <...>
alexnews> нда согласен, не подумал

ЯНП... вроде бы клоны - это фишка ПТ и Арии51?
...
Рейтинг: 0 / 0
можно ли с оптимизировать этот запрос?
    #38687289
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexnews,

а если джойн после лефтджойна поставить? а то у вас сначала идёт джойн с s, а только потом она "объявляется"
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 2 из 3
Форумы / MySQL [игнор отключен] [закрыт для гостей] / можно ли с оптимизировать этот запрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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