Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Помогите пожалуйста составить запрос SQL / 5 сообщений из 5, страница 1 из 1
22.07.2010, 17:51
    #36755227
dava_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста составить запрос 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;

Вопрос: как оптимизировать запрос или создать другой запрос, чтобы не сильно "грузить" сервер?
...
Рейтинг: 0 / 0
22.07.2010, 22:06
    #36755586
AlexPhil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста составить запрос SQL
dava_,

Какая СУБД? План запроса смотрели (если такое понятие в этой СУБД есть)?
Ну и на затравку - зачем нужна таблица points и insert into в неё?
...
Рейтинг: 0 / 0
23.07.2010, 04:12
    #36755742
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста составить запрос SQL
AlexPhilзачем нужна таблица points и insert into в неё?Видимо, для ускорения выборки последних значений. ХШ подсказывает, что триггер на вставку/обновление исходной таблицы был бы побыстрее. Впрочем, пока что мы даже не знаем, о какой СУБД идёт речь...
...
Рейтинг: 0 / 0
23.07.2010, 12:02
    #36756205
dava_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста составить запрос SQL
tanglir,

извините, что сразу не указал, СУБД - MS SQL Server
...
Рейтинг: 0 / 0
23.07.2010, 23:19
    #36757460
AlexPhil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста составить запрос SQL
dava_tanglir,

извините, что сразу не указал, СУБД - MS SQL Server
ну тогда смотрите план запросов.
Также можно проверить наличие индексов на поля point_id (оно nvarchar?), timestamp в обоих таблицах.
Данные лучше удалять через truncate table points

Но в целом идея с таблицей points не очевидна. У вас очень много запросов на взятие свежих данных, причем данные очень редко обновляются? Почему вы это в одном запросе не делаете?
...
Рейтинг: 0 / 0
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Помогите пожалуйста составить запрос SQL / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]