Помогите составить запрос SQL
Есть таблица data_log с полями: point_id, timestamp, _VAL.
Есть таблица unpoints с полем: point. В таблице содержаться имена переменных, которые нужно выбирать из таблицы data_log, и выбирать значения(_VAL)так, чтобы поле timestamp(дата, время) было максимальным, т.е. самым свежим.
Создаю третью таблицу "points" в которой содержаться имена переменных из таблицы unpoints и соответствующие им самые свежие timestamp(из таблицы data_log), затем запросом сопоставляю таблицы "points" и "data_log", чтобы взять самые свежие значения переменных, которые записаны в таблице "unpoints".
Есть таблица points с полями: point, timestamp.
Привожу запрос который есть, но беда в том, что запрос слишком сильно "грузит" сервер, т.к. в таблице data_log несколько миллионов записей:
delete from points;(предварительно очищаю таблицу points)
insert into points Select MAX(DATA_LOG.timestamp), DATA_LOG.point_id FROM dbo.DATA_LOG where point_id Like N'%A1.A%' GROUP BY DATA_LOG.point_id;(этот запрос сильно "грузит" сервер)
select _VAL, point_id, data_log.timestamp from data_log INNER JOIN points ON data_log.point_id = points.point
WHERE points.timestamp=DATA_LOG.timestamp;
Вопрос: как оптимизировать запрос или создать другой запрос, чтобы не сильно "грузить" сервер?
Есть таблица data_log с полями: point_id, timestamp, _VAL.
Есть таблица unpoints с полем: point. В таблице содержаться имена переменных, которые нужно выбирать из таблицы data_log, и выбирать значения(_VAL)так, чтобы поле timestamp(дата, время) было максимальным, т.е. самым свежим.
Создаю третью таблицу "points" в которой содержаться имена переменных из таблицы unpoints и соответствующие им самые свежие timestamp(из таблицы data_log), затем запросом сопоставляю таблицы "points" и "data_log", чтобы взять самые свежие значения переменных, которые записаны в таблице "unpoints".
Есть таблица points с полями: point, timestamp.
Привожу запрос который есть, но беда в том, что запрос слишком сильно "грузит" сервер, т.к. в таблице data_log несколько миллионов записей:
delete from points;(предварительно очищаю таблицу points)
insert into points Select MAX(DATA_LOG.timestamp), DATA_LOG.point_id FROM dbo.DATA_LOG where point_id Like N'%A1.A%' GROUP BY DATA_LOG.point_id;(этот запрос сильно "грузит" сервер)
select _VAL, point_id, data_log.timestamp from data_log INNER JOIN points ON data_log.point_id = points.point
WHERE points.timestamp=DATA_LOG.timestamp;
Вопрос: как оптимизировать запрос или создать другой запрос, чтобы не сильно "грузить" сервер?
