Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Избавится от SELECT в выражении WHERE
|
|||
|---|---|---|---|
|
#18+
Есть такая таблица в БД: |UserId |DateTo |serviceCode|status|lastDate | |116750128|2018-03-11 22:00:00|PE0753.24 |1 |2018-02-12 20:31:43| |116750128|2018-03-29 22:00:00|PE0753.24 |1 |2018-01-29 22:00:00| |116750128|2038-01-19 06:14:07|PE0753.24 |1 |2018-01-30 22:00:00| Необходимо выбрать lastDate только у тех записей, у которых `DateTo` равна максимуму среди `DateTo` которые относятся к `UserId`, `serviceCode` и `status`. Т.е. в данном случае должно вернутся `2018-01-30 22:00:00`, т.к. DateTo=2038-01-19 06:14:07 максимуму, среди UserId=116750128 и serviceCode=PE0753.24 и status=1. Смог придумать такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Может есть способ получше, не нравится подселект в конструкции WHERE. Данный запрос долго отрабатывает на таблице с порядком 200 млн записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2018, 23:22 |
|
||
|
Избавится от SELECT в выражении WHERE
|
|||
|---|---|---|---|
|
#18+
sergey-iv3, Показывайте DDL таблиц и план запроса. Как вариант, запрос можно переписать так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2018, 23:41 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1829832]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
10ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 153ms |

| 0 / 0 |
