@dba_ru

Страница 469 из 718
Anton
31.03.2018
18:21:21
И будет этот запрос выполняться в большинсттве СУБД в охренеть сколько раз медленнее

Al
31.03.2018
18:22:16
Anton
31.03.2018
18:22:54
@crestoff Если по одному времени у тебя может бытть несколько записей, то единственным вариантом будет подзапрос заменить на ордер бай тайм (если по нему индекс есть) или праймари автоинкрремент (если равнозначно времени) desc limit 1

Google
Anton
31.03.2018
18:23:41
груп бай ты предложил

Al
31.03.2018
18:23:58
да пофигу

Anton
31.03.2018
18:24:02
А я же предлагаю просто ускорить поиск максимального времени, всё

Al
31.03.2018
18:24:08
подумал об одном. написал другое :)

ордер конечно же

Anton
31.03.2018
18:24:32
да пофигу
ну выбери с селекттивностью даты в 1%. Посчитай разницу во времени выполнения))))

Crestoff
31.03.2018
18:24:33
короче не пойдёт

щас покажу весь запрос

Anton
31.03.2018
18:24:43
Crestoff
31.03.2018
18:26:34
SELECT domain_id, ad_account_id, revenue FROM log_profit WHERE (time BETWEEN 1522454400 AND 1522536960) AND ((domain_id IN ('375', '386', '379', '378')) AND (ad_account_id IN ('12', '14', '17', '11))) GROUP BY ad_account_id ORDER BY revenue DESC

вот пример запроса

мне нужны значения , при которых время (time) будет максимальным

при группировке по ad_account_id

Google
Al
31.03.2018
18:28:04
Crestoff
31.03.2018
18:28:58
добавить сортировку по времени?

ORDER BY `revenue` DESC , time ASC

это имеешь ввиду?

Anton
31.03.2018
18:31:11
Подзапросик с джойном самого на себя. Если есть составной индекс будет работать влёт

сначала собираешь accountid,MAX(time), потом по этим полям делаешь джойн

но тут много вариантов, зависитт от структуры таблицы и селективностти конкретно взятых индексов конкретно в этом запросе

Crestoff
31.03.2018
18:32:49
то есть это нужно тянуть в подзапрос все условия что и в основном?

IN и тд

Anton
31.03.2018
18:33:01
ну да

возможно у тебя там по дате с гулькин нос отсекаеттся и можно будет сессионкой с хевингом

оооочень сильно короче завистит от вводных

Crestoff
31.03.2018
18:33:39
да вот и не хотлось бы этот вагон условий в подзапрос тянуть

уродливо как-то

Anton
31.03.2018
18:34:05
ттак они у тебя из запроса уйти могут

Crestoff
31.03.2018
18:34:19
ааа, точно

Anton
31.03.2018
18:34:46
не точно. Зависит отт индексов в таблице))))

Crestoff
31.03.2018
18:34:59
да индексы то добавлю

Anton
31.03.2018
18:35:05
может у ттебя индекс тока по домеену например, кто вас знает...

Crestoff
31.03.2018
18:35:06
какие нужно

Google
Anton
31.03.2018
18:35:21
да индексы то добавлю
тогда делай состтавной на аккаунт и время

причём в таком порядке

Crestoff
31.03.2018
18:36:00
вроде я понял тебя, спасибо!

это подойдёт

Anton
31.03.2018
18:36:47
повторюсь, один из тех примеров, при которых недавний опус @MasterZiv как никогда хорошо подходит - очень зависит от того, что под капотом.

настройки/индексы/профиль данных(самое важное)

я тебе более-менее универсально подсказал. НЕ факт, что это будет самое быстрое в твоём случае

Crestoff
31.03.2018
18:38:06
да это статса в админке, не нужно её надрачивать

не будет 5к запросов в сек)

так что уверен, что решение в данном случае подходящее

Ilia
31.03.2018
19:28:28
хотелось бы без селекта в WHERE
Интересно, почему. Чем select мешает?

Crestoff
31.03.2018
19:29:03
да уже ничем не мешает

когда условия перекочевали в субзапрос

Ilia
31.03.2018
19:33:03
SELECT sum(revenue) FROM log_profit WHERE time = (SELECT max(time) FROM log_profit)
Ну такой запрос тоже вполне себе хороший может быть по производительности, если за это время мало записей.

Crestoff
31.03.2018
19:34:28
да записей не более 500

может 1к

Artem
01.04.2018
06:28:34
Попробуй так. SELECT sum(revenue) FROM log_profit JOIN (SELECT time FROM log_profit ORDER BY time) s ON (log_profit.time = s.time) GROUP BY log_profit.time

Игорь
01.04.2018
10:29:33
Товарищи, кто знает хорошую литературу по mongodb? Кроме документации, разумеется

Denis
01.04.2018
11:02:14
Ничего нет лучше доков как бы не баянисто это было - там у них на оф сайте можно курс пройти - видео короткие + задания --дают диплом

Ilia
01.04.2018
20:22:47
да записей не более 500
Если так мало, вообще все равно как

Google
Dmitry
02.04.2018
09:22:15
Всем привет! Ай нид хелп. Пытаюсь сделать бекап Postgres на локальной машине. При запуске sudo -u postgres pg_basebackup -D /mnt/nfs/backup01/$(date +%Y-%m-%d-%H-%M)-full-speech-pro -Ft -z -P —xlog-method=fetch получаю pg_basebackup: не удалось подключиться к серверу: FATAL: no pg_hba.conf entry for replication connection from host "[local]", user "postgres", SSL off В pg_hba есть # IPv4 local connections: host all all 127.0.0.1/32 trust Что я делаю не так?\

Vladislav
02.04.2018
09:26:17
не настроел pg_hba

Dmitry
02.04.2018
09:38:49
не настроел pg_hba
но что ему нехватат? host all all 127.0.0.1/32 trust ему, понимаешь, мало

Vladislav
02.04.2018
09:39:41
если я правильно помню, для реплики есть отдельный критерий в конфиге

Mengi
03.04.2018
03:50:20
Всем привет! а кто нибудь использует для вывода отчетов JasperReports? как вывести excel с листами в нем не подскажете? ?

Mikhail
03.04.2018
11:52:09
Господа, привет. Есть ли умеренно долгий способ в mysql 5.7 нарезать существующую таблицу с кучей данных на ежедневные партиции?

изначально таблица была создана без партиций и вот "внезапно" разрослась

Vladislav
03.04.2018
11:55:20
взять и создать

тут скорее важен не столько вопрос времени, сколько доступности

Mikhail
03.04.2018
11:56:40
вопрос доступности остро не стоит, имеется ввиду создать партицированную таблицу и перелить туда данные?

lost
03.04.2018
11:57:31
репликация присутствует, или один сервер?

Mikhail
03.04.2018
11:57:34
один

Mikhail
03.04.2018
15:25:59
да уже в процессе

Юра
03.04.2018
23:01:46
Table A - id pk - name И Table B - a_id1 pk fk A - a_id2 pk fk A - name SELECT a_id1, a_id2 FROM B WHERE name = '...'; Вернет мне пары A.id, как мне их заменить на A.name?

promikhail
04.04.2018
02:08:43
ну есть join

Страница 469 из 718