|
|
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
есть таблица Код: sql 1. actId - уникальный автономер actTit тип события actFaceId номер посещения actFlag - маркер для метки записи в расчет показателя (для фильтрации) у нас в одном посещении получается несколько одинаковых целевых actTit, которые мы хотим посчитать, но ряд с этим показателем должен быть учтен только один на каждый actFaceId вопрос: как проставить этот маркер только для одного ряда с заданным actTit, чтобы комбинации [actTit, actFaceId, actFlag] были только в одном единственном экземпляре? по сути речь идет о неком update distinct ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 17:35:33 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
на всякий случай пример гипотетических данных таблицы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 17:40:04 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
Решение найдно... Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 18:03:03 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
Lumix Код: sql 1. А это зачем так сложно? Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 18:43:29 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
miksoftLumix Код: sql 1. А это зачем так сложно? Код: sql 1. О! прикольно, спасибо, я просто всегда думал, что поля, которые мы перечисляем в group by обязательно должны быть перечислены ещё и в селекте. Реально спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 19:22:02 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
miksoft, знаешь почему надо было вводить алиас и вложенные селекты? потому что мускуль запрещает апдейтить селектами из этой же самой таблицы, а трюк с вложенными запросами через алиас он создает промежуточную временную таблицу и поэтому ок вот))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 19:26:38 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
Lumix, Еще можно попробовать через переменные. Тогда подзапросы такого рода будут вообще не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 19:52:29 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
miksoftLumix, Еще можно попробовать через переменные. Тогда подзапросы такого рода будут вообще не нужны. а можно поподробнее, что-то я не всекаю про переменные... вопрос уже решен и решение уже сдано, мне просто интересно чисто из принципа... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 21:08:12 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
LumixmiksoftLumix, Еще можно попробовать через переменные. Тогда подзапросы такого рода будут вообще не нужны. а можно поподробнее, что-то я не всекаю про переменные...См. 7489069 Lumixвопрос уже решен и решение уже сдано, мне просто интересно чисто из принципа...Если у вас MySQL до версии 5.6, то я бы такое решение с in (select ...) не принял. Или, по крайней мере, только после сравнения со всеми остальными вариантами по быстродействию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 22:46:15 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
miksoftЕсли у вас MySQL до версии 5.6, то я бы такое решение с in (select ...) не принял. Или, по крайней мере, только после сравнения со всеми остальными вариантами по быстродействию. я в версиях особо не секу, но данное решение было сдано на MariaDB-5.5.38 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 23:14:05 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
miksoftСм. 7489069 я посмотрел это решение и получается что сейчас речь идет о min() + group by vs order by по скорости неужели группировка дороже, чем сортировка??? ************** ещё в интернете почитал по моему случаю советуют вместо id in (select id использовать джоины типа такого Код: sql 1. vs Код: sql 1. мотивируют так, что в первом случае происходит использование неиндексированной временной таблицы, а во втором индексированной. как считаете врут или правду говорят?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 23:35:54 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
Lumixещё в интернете почитал по моему случаю советуют вместо id in (select id использовать джоины типа такого кстати, как оказалось об этом не только в интернете пишут и тут на форуме про это есть специальный фак про in (select вот ссылка 7488749 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 23:40:09 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
Lumixещё в интернете почитал по моему случаю советуют вместо id in (select id использовать джоины типа такого Код: sql 1. vs Код: sql 1. мотивируют так, что в первом случае происходит использование неиндексированной временной таблицы, а во втором индексированной. как считаете врут или правду говорят??Советуют правильно, но аргументация другая. В версиях MySQL до 5.6 оптимизатор не понимал, что подзапрос в IN (SELECT ...) некореллированный, и в результате выполнял его не один раз, а столько, сколько раз его надо проверить. Насчет MariaDB я не в курсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 23:44:15 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
miksoftВ версиях MySQL до 5.6 оптимизатор не понимал, что подзапрос в IN (SELECT ...) некореллированный, и в результате выполнял его не один раз, а столько, сколько раз его надо проверить. Насчет MariaDB я не в курсе. ок, буду знать я попрошу этот вопрос обсудить с заказчиком, может они смогут поставить 5.6 или свежее, чтобы у них работало быстрее но эта функция все равно работает не в потоковом режиме, а вызывается изредко, когда им надо пересчитать целостную картину и поэтому она вызывается от силы пару раз в мес и в принципе они готовы ждать несколько секунд им пофиг... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2014, 01:15:20 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
Lumixможет они смогут поставить 5.6 или свежее, чтобы у них работало быстрееДля начала просто посмотрите план запроса. Возможно, это уже пофиксено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2014, 01:31:08 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
miksoftLumixможет они смогут поставить 5.6 или свежее, чтобы у них работало быстрееДля начала просто посмотрите план запроса. Возможно, это уже пофиксено. так вроде explain update только с 5.6 появился... в ранних версиях его же нету... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2014, 08:31:15 |
|
||
|
Distinct update
|
|||
|---|---|---|---|
|
#18+
Lumixmiksoftпропущено... Для начала просто посмотрите план запроса. Возможно, это уже пофиксено. так вроде explain update только с 5.6 появился... в ранних версиях его же нету...Ничего не мешает переправить на SELECT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2014, 11:04:18 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=164&tid=1834270]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 201ms |
| total: | 351ms |

| 0 / 0 |
