Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.05.13;
Скачать: [xml.tar.bz2];

Вниз

SQL.Text. Сколь длинным он может быть?   Найти похожие ветки 

 
Германн ©   (2012-01-12 00:46) [0]

Задача. Нужно удалить какое-то количество определенных записей из таблицы. Критерий - конкретные значения уникального поля. Не вижу никаких других вариантов, кроме
delete from MyTable
where MyField in

Но эти значения полей я беру не из БД. Точнее не напрямую из БД. Так что вложенный запрос не подходит. Приходится составлять строку типа "(N1,N2..NхзСколько)". Какую длину SQL.Text выдержит?

БД FB 1.5. Компоненты IBX.
Или есть другие варианты?


 
sniknik ©   (2012-01-12 00:53) [1]

> Или есть другие варианты?
временная таблица для "ID-шников", и потом запрос. по некоторым тестам с sql.ru это еше и самый быстры вариант, несмотря на "2-х ходовку".
хотя, я естественно смотрел все это для mssql, когда нужно было подобное.


 
sniknik ©   (2012-01-12 00:55) [2]

> самый быстры вариант
да, естественно это для больших объемов. для маленьких неважно.


 
sniknik ©   (2012-01-12 01:04) [3]

+
да еще вспомнил, уже именно для FB...
если в транзакции слишком много записей меняется, то она становится "тяжелой". подбирали оптимальное количество, остановились где-то на 3 тыс максимум, получалось 10 раз по 3 тыс было раз в 10 быстрее чем 1 раз 30 тыс (ну типа того, точные цифры не помню)...

т.что NхзСколько, стоило бы ограничивать. (перепроверить бы надо, может сейчас уже все поменялось... памяти то поболе стало, а с FB я где-то году в 2004/5 только сталкивался/делал)


 
Германн ©   (2012-01-12 01:05) [4]


> да, естественно это для больших объемов.

А что стоит расценивать как "большой" объём? В реальной БД, которую мне дали для экспериментов в данной таблице было чуть меньше 18 тыс. записей. Удаление 740 из них вышеописанным способом заняло ~3 секунды. Не думаю, что в других случаях использования того ПО, которое заполняет эту таблицу количество записей будет хотя бы на порядок больше.


 
Германн ©   (2012-01-12 01:15) [5]


> sniknik ©   (12.01.12 01:04) [3]

Не успел прочитать. Но думаю, что вариант с 3 тыс записей, которые нужно удалить вряд ли можно считать весьма распространенным. Я и те 740 выбрал только для эксперимента.

А вот запрос, которым я выбираю для пользователя записи для выбора "удалить или нет" выполняется от нескольких минут до нескольких десятков минут. :(
При максимальном количестве записей в таблице, участвующей в запросе ~850 тыс. Быстрее никак не получается :(


 
RWolf ©   (2012-01-12 02:28) [6]

http://www.sql.ru/forum/actualthread.aspx?tid=907459


 
Ega23 ©   (2012-01-12 08:34) [7]


> Приходится составлять строку типа "(N1,N2..NхзСколько)".
>  Какую длину SQL.Text выдержит?
>

Пару месяцев назад наткнулся, что delete from table where id in (1, 2, ..., N) при N>1500 вылетает исключение.


 
Ega23 ©   (2012-01-12 08:35) [8]

offtopic: Тут до меня слухи дошли, что ты что-то хотел от меня. Так ты звони. :)


 
Германн ©   (2012-01-12 12:42) [9]


> Ega23 ©   (12.01.12 08:35) [8]

Спасибо. Но пока вопрос не созрел. :)


 
Ega23 ©   (2012-01-12 13:56) [10]


> Спасибо. Но пока вопрос не созрел. :)


Тогда просто звони. Я сёдня вечером готов пива попить в хорошей компании. А Чертановская - как раз по пути домой. :)


 
Германн ©   (2012-01-13 02:12) [11]


> Ega23 ©   (12.01.12 13:56) [10]

<offtop>
Это мой первый и последний оффтоп в данной ветке.
Олег. Я пиво давно уже не пью. Я думал пригласить тебя ко мне домой, угостить хорошим ужином и попросить тебя помочь. А выпить - у меня много чего найдётся. :)
Жена даже ругается "А на кой нам это сборище бутылок!" :)
</offtop>


 
Anatoly Podgoretsky ©   (2012-01-13 12:08) [12]

Вообще то точный ответ такой - длина зависит от ОС, на 32 бит до 2 гб, на 64 бит можешь как минимум считать что это два террабайта.
Тебя должен вообще то интересовать другой вопрос - какие ограничения у СУБД, а не у  SQL.Text


 
Ega23 ©   (2012-01-13 12:11) [13]


> Тебя должен вообще то интересовать другой вопрос - какие
> ограничения у СУБД, а не у  SQL.Text


Не только у СУБД, ещё у DAC.


 
Anatoly Podgoretsky ©   (2012-01-13 12:47) [14]

> Ega23  (13.01.2012 12:11:13)  [13]

Ну и его тоже надо учитывать. Вот чего не надо учитывать, это SQL.Text



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.05.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
2-1325845594
Faceless
2012-01-06 14:26
2012.05.13
помогите с логикой


3-1275551753
fox23
2010-06-03 11:55
2012.05.13
помогите


3-1275468246
Miau
2010-06-02 12:44
2012.05.13
Кто подключен к серверу?


15-1325924494
Karabaz
2012-01-07 12:21
2012.05.13
TreeView многостолбцовый ищу


15-1325570885
Кто б сомневался
2012-01-03 10:08
2012.05.13
Электронные игры 80-ых (aka Электроника)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский