У меня есть данные SQL, которые содержат две таблицы с именами buletin
и pasarbubar
. Я хочу получить данные, используя этот запрос:
SELECT
b.date_time,
b.Type,
b.duration,
(SELECT MAX('0') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f0_max,
(SELECT MAX('1') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f1_max,
(SELECT MAX('2') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f2_max,
(SELECT MAX('3') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f3_max,
(SELECT MAX('4') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f4_max,
(SELECT MAX('5') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f5_max,
(SELECT MAX('6') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f6_max,
(SELECT MAX('7') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f7_max,
(SELECT MAX('8') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f8_max,
(SELECT MAX('9') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f9_max,
(SELECT MAX('10') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f10_max,
(SELECT MAX('11') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f11_max,
(SELECT MAX('12') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f12_max,
(SELECT MAX('13') FROM rsam_bpptkg.pasarbubar e
WHERE e.ss_time BETWEEN b.date_time AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)) AS f13_max
FROM bul.buletin b
На этот раз для выполнения этого запроса я обычно запускаю с помощью phpmyadmin, для получения 25 строк данных требуется 1 час. Хотя общее количество данных, которое мне нужно получить, составляет до 3000 строк данных. Может быть, кто-нибудь может помочь мне изменить мой запрос или предложить в python
или php
скрипте.
* Примечание: здесь мой образец данных
Стол Pasarbubar
Buletin table
вместо 13 выберите max.. из них можно использовать один запрос
SELECT MAX('0') f0_max
, MAX('1') f1_max
, MAX('2') f2_max
, MAX('3') f3_max
, MAX('4') f4_max
, MAX('5') f5_max
, MAX('6') f6_max
, MAX('7') f7_max
, MAX('8') f8_max
, MAX('9') f9_max
, MAX('10') f0_max
, MAX('11') f11_max
, MAX('12') f12_max
, MAX('13') f13_max
FROM rsam_bpptkg.pasarbubar e
INNER JOIN bul.buletin b ON e.ss_time BETWEEN b.date_time
AND DATE_ADD(b.date_time, INTERVAL 10 SECOND)
и убедитесь, что у вас есть правильный индекс на
table rsam_bpptkg.pasarbubar column ss_time
table bul.buletin on clumn date_time
MAX(`0`)
в качестве константы0
и т. д., пока a не застрял в понимании того, что вы используете числа в качестве столбцов, потому что я заметил обратные запаздывания до поздней даты. лучше нормализовать, если это возможно, и применение не сильно зависит от этой структуры.