|
|
|
Помогите пожалуйста составить запрос SQL
|
|||
|---|---|---|---|
|
#18+
Есть таблица 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; Вопрос: как оптимизировать запрос или создать другой запрос, чтобы не сильно "грузить" сервер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 17:51 |
|
||
|
Помогите пожалуйста составить запрос SQL
|
|||
|---|---|---|---|
|
#18+
dava_, Какая СУБД? План запроса смотрели (если такое понятие в этой СУБД есть)? Ну и на затравку - зачем нужна таблица points и insert into в неё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 22:06 |
|
||
|
Помогите пожалуйста составить запрос SQL
|
|||
|---|---|---|---|
|
#18+
AlexPhilзачем нужна таблица points и insert into в неё?Видимо, для ускорения выборки последних значений. ХШ подсказывает, что триггер на вставку/обновление исходной таблицы был бы побыстрее. Впрочем, пока что мы даже не знаем, о какой СУБД идёт речь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2010, 04:12 |
|
||
|
Помогите пожалуйста составить запрос SQL
|
|||
|---|---|---|---|
|
#18+
tanglir, извините, что сразу не указал, СУБД - MS SQL Server ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2010, 12:02 |
|
||
|
Помогите пожалуйста составить запрос SQL
|
|||
|---|---|---|---|
|
#18+
dava_tanglir, извините, что сразу не указал, СУБД - MS SQL Server ну тогда смотрите план запросов. Также можно проверить наличие индексов на поля point_id (оно nvarchar?), timestamp в обоих таблицах. Данные лучше удалять через truncate table points Но в целом идея с таблицей points не очевидна. У вас очень много запросов на взятие свежих данных, причем данные очень редко обновляются? Почему вы это в одном запросе не делаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2010, 23:19 |
|
||
|
|

start [/forum/topic.php?fid=56&msg=36755227&tid=2015566]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
155ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 268ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...