![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно внести изменения в базу [D7, MS Access]
AD_infiniTUM © (2004-07-22 14:30:00)Таблица содержит некоторое количество полей.
Поле Field1 ключевое. Нужно в записи с разными значениями Field1, записать в Field2, к примеру, единицу.
Как правильно это сделать?
1. Для каждого значения Field1 выполнить свой SQL вопрос.
UPDATE MainTable SET Field2=1 WHERE Field1=2
UPDATE MainTable SET Field2=1 WHERE Field1=7
UPDATE MainTable SET Field2=1 WHERE Field1=90
UPDATE MainTable SET Field2=1 WHERE Field1=100
...
2. В одном запросе через OR
UPDATE MainTable SET Field2=1 WHERE Field1=2 OR Field1=7 OR Field1=90 OR Field1=100 ...
3. Или с помощью IN
UPDATE MainTable SET Field2=1 WHERE Field1 IN (2, 7, 90, 100 ...)
Ega23 (2004-07-22 17:49:00) [1]Нет ничего серьезнее, чем собственные эксперименты и наблюдения :)
Это верно, но метод Монте-Карло хорош только в том случае, если срок жизни стремиться к бесконечности.
А вот Microsoft что по этому поводу говорит, интересно?
bushmen (2004-07-22 17:47:00) [2]> Ega23 © (22.07.04 17:44) [16]
Нет ничего серьезнее, чем собственные эксперименты и наблюдения :)
Ega23 (2004-07-22 17:44:00) [3]bushmen © (22.07.04 17:24) [15]
Просто давно хотел разобраться в алгоритме оптимизации запросов, только что-нибудь серьёзное почитать хотелось бы.
bushmen (2004-07-22 17:24:00) [4]> Ega23 © (22.07.04 17:16) [14]
www.sql.ru и собственные наблюдения
Ega23 (2004-07-22 17:16:00) [5]bushmen © (22.07.04 17:12) [13]
Откуда информация?
bushmen (2004-07-22 17:12:00) [6]> Johnmen © (22.07.04 16:04) [10]
Не знаю как в Access, но в MSSQL третий вид приводится ко второму и именно он выполняется.
Johnmen (2004-07-22 17:08:00) [7]Надо порыться в доках по Аксесу. Там, где общая спецификация...
AD_infiniTUM (2004-07-22 16:40:00) [8]Ega23
> Кстати, скорее всего ты динамически такую строчку составлять
> будешь?
Да.
Johnmen
> Посмотри, какой там макс.размер для текста запроса.
А где можно это посмотреть? В справке я не нашел. А тип параметра WideString или TStringList. Если максимальная длина ограничена этими типами, то влезет много.
Johnmen (2004-07-22 16:04:00) [9]>bushmen © (22.07.04 14:42) [5]
>Они одинаковы будут
Я осторожно сказал "м.б.", т.к. наверняка ни я, ни ты не знаем. Ведь всё зависит от того, как аксессный драйвер разберет логическое выражение, и как будет ему следовать...
>AD_infiniTUM
Посмотри, какой там макс.размер для текста запроса.
Ega23 (2004-07-22 15:54:00) [10]Т.е. в любом случае 2, 3 варианты, даже если этих значение в скобочках (2, 7, 90, 100 ...) будет порядка тысячи.
Я бы даже сказал не "даже если", а "тем более", если их тысячи. Так всё одной транзакцией пройдёт.
Кстати, скорее всего ты динамически такую строчку составлять будешь? Тогда вариант 3, ИМХО, проще всего.
AD_infiniTUM (2004-07-22 15:21:00) [11]Т.е. в любом случае 2, 3 варианты, даже если этих значение в скобочках (2, 7, 90, 100 ...) будет порядка тысячи.
Ega23 (2004-07-22 14:45:00) [12]bushmen © (22.07.04 14:43) [6]
"Маленькая бутылка", что же ещё? :о)
bushmen (2004-07-22 14:43:00) [13]> Ega23 © (22.07.04 14:41) [4]
А "м.б." еще не удалось расшифровать? :)
bushmen (2004-07-22 14:42:00) [14]> м.б.одинаковы
Они одинаковы будут
Ega23 (2004-07-22 14:41:00) [15]Оффтоп:
Последние 2 варианта с т.з. скорости м.б.одинаковы
Минуты 2 въезжал, что т.з. это "Точка зрения", а не "Тех.Задание".
Johnmen (2004-07-22 14:38:00) [16]Последние 2 варианта с т.з. скорости м.б.одинаковы
Для удобства 3.
Term (2004-07-22 14:34:00) [17]зачем так мудрить
Ega23 (2004-07-22 14:33:00) [18]Все 3 варианта имеют право на существование. Я бы сделал через IN, но это моё ИМХО. просто так мне было бы удобнее смотреть на код.