Форум: "Потрепаться";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
ВнизДавайте померяемся... Найти похожие ветки
← →
pasha_golub © (2005-08-16 15:35) [0]Интересно, кто какой самый большой запрос SELECT написал в своей жизни?
Имеется ввиду только одна конструкция SELECT, ну и желательно, чтобы имела смысл.
← →
linesoft © (2005-08-16 15:39) [1]Ну и предъяви
← →
pasha_golub © (2005-08-16 15:42) [2]Та ну... Хочется увидеть другие сначала. А вдруг у меня так, стишок... :0)
← →
Андрей Жук © (2005-08-16 15:42) [3]Паш, ну размер запроса ограничен 64 кб. А то б я написал :)
← →
pasha_golub © (2005-08-16 15:43) [4]Андрей Жук © (16.08.05 15:42) [3]
Не, ну я имеюю виду запрос, который родился в результате реальной работы с реальными данными. А не для того, чтобы померяться. :0)
← →
Lamer@fools.ua © (2005-08-16 15:48) [5]>Интересно, кто какой самый большой запрос SELECT написал в своей жизни?
SELECT MAX(Salary), MAX(Girls), MAX(Friends) FROM Life
← →
wicked © (2005-08-16 15:48) [6]на 2 - 3 page down"а запрос был...
чего делал - выбирал из биллинговой базы енергокомпании данные о показателях счетчиков абонентов и считал их месячное (с 1-го по 31-е) потребление электроенергии... где надо - интерполировал данные.... учитывал переходы счетчика через 0 и замены счетчиков у абонентов...
писался с вариантами около месяца... СУБД - mssql2k...
привести не могу, ибо давно было...
вот, меряюсь.... :)
← →
paul_k © (2005-08-16 15:54) [7]Ну запрос не запрос а процедуры в которых "ошибка в 15550 строке" - это нормальное явление...
ограничение SYBASE на 16 таблиц в одном запросе обходить танцуя с бубном тоже приходилось..
← →
linesoft © (2005-08-16 15:54) [8]А вот цитирую (примерно):
"Извините, у меня было мало времени, поэтому написал много"
← →
Суслик © (2005-08-16 16:00) [9]70kb
← →
pasha_golub © (2005-08-16 16:04) [10]Суслик © (16.08.05 16:00) [9]
Ой, блин... А покажь...
paul_k © (16.08.05 15:54) [7]
Ну, процедуры это да... Там не удивительно.
wicked © (16.08.05 15:48) [6]
У меня где-то также... Хотя PageDown"ы они вроде как разные.
Lamer@fools.ua © (16.08.05 15:48) [5]
Пойдеть. :0)
← →
Александр Иванов © (2005-08-16 16:07) [11]Андрей Жук © (16.08.05 15:42) [3]
Для ВДЕ можно запросы писать в файлы и потом писать запросы к этим файлам. Так что скорее всего размер не ограничен...
← →
Digitman © (2005-08-16 16:07) [12]
> Давайте померяемся
что там "меряться" ?
гордись !
у тебя все равно больше.
малацца !
с чем и позволь поздравить.
← →
pasha_golub © (2005-08-16 16:11) [13]Digitman © (16.08.05 16:07) [12]
Пасиб. Пойду выпью по этому поводу.
← →
Layner © (2005-08-16 16:36) [14]Смысл больших запросов не понимаю... это то же самое, что какой у вас самый большой юнит в Delphi. Существуют вьюхи, функции, временные таблицы и т.п., с ними можно превратить запрос в очень компактный и красивый. PS. Сам писал запрос максимум в 20 строк, не считать если приклеенный к нему по UNION ALL такой же но на др. таблицу...
По сложности до 10 INNER JOIN.. в разные таблицы, больше необходимости не было..
Пришла к нам как то система, отчет делающая минут 5, при этом весь интерефейс замораживался.. ужас.. Переписал запрос, отчет выводится за секунду, этот же самый, правда вывожу в другой программе :)
← →
pasha_golub © (2005-08-16 16:42) [15]Layner © (16.08.05 16:36) [14]
мысл больших запросов не понимаю... это то же самое, что какой у вас самый большой юнит в Delphi.
да это понятно все. Но бывают же в жизни случаи, когда низзя пользоваться вьюхами, времянками и хранимыми процедурами
← →
Ломброзо © (2005-08-16 16:43) [16]pasha_golub © (16.08.05 16:04)
Суслик © (16.08.05 16:00) [9]
Ой, блин... А покажь...
Дык это ж суслик. А он любит оригинальные решения. Возможно, именно его предки изобрели самый большой в мире процессор и вывели самого маленького слона.
← →
pasha_golub © (2005-08-16 16:45) [17]Ломброзо © (16.08.05 16:43) [16]
Доктор, вы невежливы. ;0)
← →
Суслик © (2005-08-16 16:46) [18]
> [16] Ломброзо © (16.08.05 16:43)
Хорош наезжать :)
Я его побил уже на параметризованных вьюхи
← →
boriskb © (2005-08-16 16:55) [19]Я вообще то мало с этим делом общался.
В основном делал динамически создаваемые запросы.
Форма с кучей кругляшков и квадратиков. Надпись "Выбор". Клиент там чего-то нащелкает, прога сформирует запрос - так что готовых видел мало :)
Но думаю не больше страницы, двух :)
← →
Суслик © (2005-08-16 16:59) [20]У меня сейчас тоже генерация. Сколько там получается - не знаю. По первому разу бывает разбирается до 3 секунд. Потом нормально (быстро) работает.
← →
Jeer © (2005-08-16 16:59) [21]select * from TABLE;
← →
AlexWlad © (2005-08-16 20:21) [22]Ну на...
Может и неочень большой, но со скобками я попарился...
SQL.Add("SELECT id,Num,DPro,RegNoPD,DRegPD,Cust,Adress,NumDoc,DDoc,Comment,family,TypeDoc");
SQL.Add("FROM viewProjDoc");
SQL.Add("WHERE (id IN ( SELECT idproj");
SQL.Add(" FROM linProjVisa");
SQL.Add(" WHERE "+v);
SQL.Add(" (DATEVISA IS NOT NULL) AND");
SQL.Add(" ( ");
SQL.Add(" (DATEVISA2 IS NOT NULL) AND");
SQL.Add(" ( ");
SQL.Add(" DATEDIFF(week, DATEVISA, DATEVISA2) = 0 AND DATEDIFF(day, DATEVISA, DATEVISA2) > 3");
SQL.Add(" OR ");
SQL.Add(" DATEDIFF(week, DATEVISA, DATEVISA2) > 0 AND DATEDIFF(day, DATEVISA, DATEVISA2) > 4");
SQL.Add(" ) ");
SQL.Add(" OR ");
SQL.Add(" (DATEVISA2 IS NULL) AND");
SQL.Add(" ( ");
SQL.Add(" DATEDIFF(week, DATEVISA, GETDATE()) = 0 AND DATEDIFF(day, DATEVISA, GETDATE()) > 3");
SQL.Add(" OR ");
SQL.Add(" DATEDIFF(week, DATEVISA, GETDATE()) > 0 AND DATEDIFF(day, DATEVISA, GETDATE()) > 4");
SQL.Add(" ) ");
SQL.Add(" ) ");
SQL.Add(" ) "); // IN
SQL.Add(" ) "); // id
SQL.Add(" AND (id_Doc IS NULL)");
SQL.Add(" AND (bnCancel = 0)");
SQL.Add(" AND (TypeDoc="+IntToStr(DM_ProjVisa.T_TypeDocid.AsInteger)+")");
SQL.Add(" order by dpro,num ");
← →
Lamer@fools.ua © (2005-08-16 23:42) [23]>>pasha_golub © (16.08.05 16:11) [13]
>Пасиб. Пойду выпью по этому поводу.
Не яду хоть, надеюсь? :o)
← →
Piter © (2005-08-16 23:50) [24]Lamer@fools.ua © (16.08.05 15:48) [5]
SELECT MAX(Salary), MAX(Girls), MAX(Friends) FROM Life
а разве так можно?
← →
Asteroid © (2005-08-17 00:35) [25]У меня самый большой был на соединение 4-х таблиц...результат - сводная таблица, ничего сложного; но SQL Navigator вылетал с Access Violation, если нажать Refresh вместо Execute :)
← →
АлексейК (2005-08-17 05:01) [26]~300 почти полных строк
← →
Alexander Panov © (2005-08-17 05:41) [27]Oracle.
Около 600 строк. Общий объем запроса - около 15Кб.
← →
Думкин © (2005-08-17 06:27) [28]Не вижу тут Skyle. Странно. неужели у Тенцера меньше?
← →
Skyle © (2005-08-17 06:34) [29]> Думкин © (17.08.05 06:27) [28]
У Тенцера может и не меньше, не знаю.
А вот насчёт запросов... Хвалиться особенно нечем, шибко больших селектов не писал ибо это зло и неимоверный тормоз.
Большой запрос рождается из неумеренности. Во всём.
А мы просты ;-)
← →
pasha_golub © (2005-08-17 09:21) [30]Мдя... У меня 3 кб всего лишь. Будем думать как раздуть.
Skyle © (17.08.05 06:34) [29]
Большой запрос рождается из неумеренности. Во всём.
Если большому запросу суждено родиться, то таки он родится.
← →
Igorek © (2005-08-17 10:54) [31]Вот вчера накатаз хранимую процедуру, которая динамически клеит запрос по своим аргументам. В зависимости от параметра реальный запрос может быть неограниченно длинным.
Я самый крутой?
:)
← →
Sergey13 © (2005-08-17 11:01) [32]2[29] Skyle © (17.08.05 06:34)
Согласен 100%.
← →
Mystic © (2005-08-17 11:06) [33]Большой запрос рождается из неумеренности. Во всём.
Не только. Иногда это вытекает из особенностей архитектуры. Вместо того, чтобы всякий раз писать запрос заново, ты создаешь средства, чтобы править только часть запроса.
← →
Ega23 © (2005-08-17 11:17) [34]
Set NoCount On
Select Distinct G.GoodID, G.GoodNam, G.GoodPack into #xGoods
from Goods G, OrderPL OP
where G.GoodID=OP.GoodID and
OP.OrdID in (26,27,28,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46)
Select GoodID, Number as "C26" into #x26
from OrderPL where OrdID=26
Select GoodID, Number as "C27" into #x27
from OrderPL where OrdID=27
Select GoodID, Number as "C28" into #x28
from OrderPL where OrdID=28
Select GoodID, Number as "C30" into #x30
from OrderPL where OrdID=30
Select GoodID, Number as "C31" into #x31
from OrderPL where OrdID=31
Select GoodID, Number as "C32" into #x32
from OrderPL where OrdID=32
Select GoodID, Number as "C33" into #x33
from OrderPL where OrdID=33
Select GoodID, Number as "C34" into #x34
from OrderPL where OrdID=34
Select GoodID, Number as "C35" into #x35
from OrderPL where OrdID=35
Select GoodID, Number as "C36" into #x36
from OrderPL where OrdID=36
Select GoodID, Number as "C37" into #x37
from OrderPL where OrdID=37
Select GoodID, Number as "C38" into #x38
from OrderPL where OrdID=38
Select GoodID, Number as "C39" into #x39
from OrderPL where OrdID=39
Select GoodID, Number as "C40" into #x40
from OrderPL where OrdID=40
Select GoodID, Number as "C41" into #x41
from OrderPL where OrdID=41
Select GoodID, Number as "C42" into #x42
from OrderPL where OrdID=42
Select GoodID, Number as "C43" into #x43
from OrderPL where OrdID=43
Select GoodID, Number as "C44" into #x44
from OrderPL where OrdID=44
Select GoodID, Number as "C45" into #x45
from OrderPL where OrdID=45
Select GoodID, Number as "C46" into #x46
from OrderPL where OrdID=46
Set NoCount OFF
Select xG.GoodID, xG.GoodNam, xG.GoodPack, ITOG=0,
C26=xTab26.C26,C27=xTab27.C27,C28=xTab28.C28,C30=xTab30.C30,
C31=xTab31.C31,C32=xTab32.C32,C33=xTab33.C33,C34=xTab34.C34,
C35=xTab35.C35,C36=xTab36.C36,C37=xTab37.C37,C38=xTab38.C38,
C39=xTab39.C39,C40=xTab40.C40,C41=xTab41.C41,C42=xTab42.C42,
C43=xTab43.C43,C44=xTab44.C44,C45=xTab45.C45,C46=xTab46.C46
from #xGoods xG
Full Outer Join #x26 xTab26 ON xG.GoodID=xTab26.GoodID
Full Outer Join #x27 xTab27 ON xG.GoodID=xTab27.GoodID
Full Outer Join #x28 xTab28 ON xG.GoodID=xTab28.GoodID
Full Outer Join #x30 xTab30 ON xG.GoodID=xTab30.GoodID
Full Outer Join #x31 xTab31 ON xG.GoodID=xTab31.GoodID
Full Outer Join #x32 xTab32 ON xG.GoodID=xTab32.GoodID
Full Outer Join #x33 xTab33 ON xG.GoodID=xTab33.GoodID
Full Outer Join #x34 xTab34 ON xG.GoodID=xTab34.GoodID
Full Outer Join #x35 xTab35 ON xG.GoodID=xTab35.GoodID
Full Outer Join #x36 xTab36 ON xG.GoodID=xTab36.GoodID
Full Outer Join #x37 xTab37 ON xG.GoodID=xTab37.GoodID
Full Outer Join #x38 xTab38 ON xG.GoodID=xTab38.GoodID
Full Outer Join #x39 xTab39 ON xG.GoodID=xTab39.GoodID
Full Outer Join #x40 xTab40 ON xG.GoodID=xTab40.GoodID
Full Outer Join #x41 xTab41 ON xG.GoodID=xTab41.GoodID
Full Outer Join #x42 xTab42 ON xG.GoodID=xTab42.GoodID
Full Outer Join #x43 xTab43 ON xG.GoodID=xTab43.GoodID
Full Outer Join #x44 xTab44 ON xG.GoodID=xTab44.GoodID
Full Outer Join #x45 xTab45 ON xG.GoodID=xTab45.GoodID
Full Outer Join #x46 xTab46 ON xG.GoodID=xTab46.GoodID
drop table #xGoods
drop table #x26 drop table #x27 drop table #x28
drop table #x30 drop table #x31 drop table #x32
drop table #x33 drop table #x34 drop table #x35
drop table #x36 drop table #x37 drop table #x38
drop table #x39 drop table #x40 drop table #x41
drop table #x42 drop table #x43 drop table #x44
drop table #x45 drop table #x46
← →
Skyle © (2005-08-17 11:53) [35]> [30] pasha_golub © (17.08.05 09:21)
> Если большому запросу суждено родиться, то таки он родится.
но я буду очень ярым противником такой задачи (решения). Хотя видимо возможны варианты... То, о чём я - идеал.
[33] Mystic © (17.08.05 11:06)
> Не только. Иногда это вытекает из особенностей архитектуры
Согласен.
А может эта, того? Давить такую архитектуру? ;-) (ничего личного)
> [34] Ega23 © (17.08.05 11:17)
А я думал, что речь идёт о SELECT, а не о запросе как таковом...
А то есть у меня несколько кусков, в которых приходилось заниматься программированием на SQL (иначе не скажешь), но такими кусками меряться - неблагодарное занятие ;-)
> [28] Думкин © (17.08.05 06:27)
>Странно. неужели у Тенцера меньше?
У него - 5 Гб сгенерированного автоматически.. И то не SELECT, а полноценная пишущая транзакция ;-)
← →
Ega23 © (2005-08-17 12:02) [36]Не, ну это конечный селект, который делает двумерную выборку. Если вкратце - по вертикали - список всех товаров, по горизонтали - заказы, принятые на конкретный день. Пересечение - кол-во единиц товара.
← →
Думкин © (2005-08-17 12:17) [37]> Skyle © (17.08.05 11:53) [35]
Я был прав!!!! Спасибо.:)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.024 c