![]() |
|
Модераторы: Akina |
![]()
|
|
| Unregistered |
|
|||
|
Unregistered |
Как я могу одним запросом вставить в таблицу сразу множество строк, а не кидать их по одной? MSSQL2000 . Спасибо.
|
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 1 Всего: 54 |
Только выборкой из других таблиц
Код на чистом SQL примерно такой...
-------------------- ![]() |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: нет Всего: 154 |
Это код как раз-то для вставки одной записи (строки). НИКАК. (Да и не нужно это если честно). Если необходимо вставить несколько записей, то используйте цикл. Даже если применять методы копирования таблиц, то их внутренняя реализация все равно такова, что они вставляют по одной записи. -------------------- |
|||
|
||||
| Kesh |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 1 Всего: 54 |
Пардон, код такой...
Это сообщение отредактировал(а) kesh - 20.1.2004, 14:32 -------------------- ![]() |
||||||
|
|||||||
| Unregistered |
|
|||
|
Unregistered |
Ну как же ненужно? Смотря какая задача. Мне нужно сохранять показания датчиков в базу sql. Датчиков около 400. Показания снимаются каждую секунду. (400 инсертов в секунду) И sqlсервер установлен "где-то там в сети". Благо, что линия до него 100Мб. Ну один хрен - ТРАФИК. Способ оптимизировать я пока не нашел. |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: нет Всего: 22 |
о, привет, коллега.
я делаю так. (все записи в таблице пронумерованы по инкременту). 1. подключаемся, берём номер последней записи. (lastid) 2. запрашиваем все записи, где id > lastid. 3.фетчим, засовываем в clientdataset, настроенный на локальный файл на диске (в цикле, ничего не поделаешь) 4. запоминаем номер последней записи в last id 5. отключаемся на форме клиента все гриды и пр. муть настроены на clientdataset. т.е. пользователи ползают по событиям локально. по мере необходимости дополнительные данные подсовываются с сервака (электронные карты доступа, планы этажей и пр.), но там тоже свой механизм кэширования. фактически, запрашивается только дата последней модификации, и если она не совпадает с датой локальной записи, только тогда запись перегружается. опрос cсервера - раз в полсекунды, база - ib. по сравнению с производительностью прошлой версии, написанной в "традиционном стиле", с постоянным коннектом, db-aware control'ами, работающими напрямую с сервером, - земля и небо. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: нет Всего: 22 |
правда, это механизм удалённого мониторинга событий, а не серверная часть
а вот что касается вставки на сервер, то это лучше всего решать аппаратно - ставить микроконтроллер, писать на него дрова, и данные с датчиков должны ложится непосредственно на сервак. писать такие объёмы через сеть - нехорошо. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Может тогда написать свой серверок, который будет принимать только циферки от программы по TCP, и уже сам будет скидывать в базу ? А стоять он будет прямо на той же машине что и SQL-сервер. Причем скидывать не по одной записи, а после накопления некого количества. И уже для сотни точек формируется пакет из сотни INSERT и он отдается на откуп SQL. Тут и траффик будет маленький и выполнение будет лучше. Дальше можно поиграть с количеством точек. Может быть будет интереснее будет сделать сохраненную процедуру (правда туда много точек зараз сложно будет положить). Зато на ее разбор времени не тратится (если кто не знает - каждый запрос предварительно разбирается и оптимизируется). Для сохраненной процедуры это делается один раз. Может это будет быстрее. |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: нет Всего: 22 |
может, кстати, помочь кэширование обновлений.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: нет Всего: 154 |
На будущее:
Вот с этого и надо было начинатать вопрос.... -------------------- |
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |