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

Вниз

дольше ли будет запрос(MSSQL)?   Найти похожие ветки 

 
Аббат Пиккола   (2012-12-05 13:49) [40]

Допустим у меня есть сетка с множественным выбором. Пользователь может отметить строки, которые ему нравятся. Я просто фантазирую. И допустим я ничего не знаю о том, что текст SQL-запроса имеет реальные ограничения на длину. И вовсе не 4 гигабайт, как некоторые могут подумать. А гораздо меньше. И я, не долго думая, хочу запомнить отмеченные пользователем строки в виде перечисления их ID и применить в каком-то SQL-запросе. Ничего не зная о подобных ограничениях, так как о них мало где пишут. Пользователь же зачем-то решил для построения своего отчета (который он просил для "выбранных нескольких строк") отметить все записи в сетке, сняв все прочие фильтрации, а их там были десятки тысяч...

Ну например.


 
наивный Талейран   (2012-12-05 13:52) [41]


> Аббат Пиккола   (05.12.12 13:49) [40]


> Пользователь же зачем-то решил ... отметить все записи в сетке, сняв все прочие фильтрации

голосую за возрождение святой инквизиции


 
знайка   (2012-12-05 13:56) [42]

Надо пользоватся средствами сервера, раз ух заплатили за их, а не запросы генерить. :)


 
Аббат Пиккола   (2012-12-05 13:57) [43]

2 наивный Талейран   (05.12.12 13:52) [41]

На мой взгляд сжигать подозреваемых  в колдовстве юзеров на кострах гуманнее, чем заранее отрубать им руки, как любят делать некоторые производители ПО.
:)


 
наивный Талейран   (2012-12-05 14:02) [44]


> Аббат Пиккола   (05.12.12 13:57) [43]

поддерживаю


 
MsGuns ©   (2012-12-05 14:12) [45]

>знайка   (05.12.12 13:56) [42]
>Надо пользоватся средствами сервера, раз ух заплатили за их, а не запросы >генерить. :)

Вот и я об этом же ([6]). Но ТС тот пост просто проигнорил :)


 
O'ShinW ©   (2012-12-05 14:16) [46]


> MsGuns ©   (05.12.12 14:12) [45]

нет,
ТС читает все.


 
Аббат Пиккола   (2012-12-05 14:19) [47]

Раз уж в MS SQL принято создавать временные таблицы, то действительно, почему бы ими не воспользоваться? Если у Вас MS SQL, конечно.


 
MsGuns ©   (2012-12-05 14:21) [48]

+
По сути топика вопрос. Откуда на клиенте берется 100500 значений, вставляемых в суперпупергиперзапрос ?
Есть три ответа:

1) Значения берутся из некоего набор данных, полученного на клиенте в результате выполнения опять же запроса.
 Вопрос к разработчику: отчего не взять в качестве where/join on вот этот самый запрос, избежав опять же непонятных "ручных" суперзапросов ?

2) Значения вводятся непосредственно юзверем.
 Вопрос к разработчику: каким образом юзверь сможет ввести 100500 значений ? А если их (значений) на три порядка меньше, то о чем тогда базар ?

3) Значения извлекаются из внешних источников (сторонние базы  например).
 Вопрос к разработчику: Почему не избрать путь промежуточной таблицы (6), ИМХО, наиболее оптимальный в данном случае ?


 
Аббат Пиккола   (2012-12-05 14:22) [49]

В творчестве важно периодически преодолевать скорлупу собственных предубеждений. Иначе можно легко превратиться в старого брюзгу, который кроме фортрана ничего не вообще признает. А все остальное (что для сосунков) - его просто бесит!...


 
MsGuns ©   (2012-12-05 14:22) [50]

>Аббат Пиккола   (05.12.12 14:19) [47]

Временные таблицы умеет создавать не только мс скл


 
MsGuns ©   (2012-12-05 14:26) [51]

Скажу больше - сейчас наверное не просто найти промсервер скл, не знающий временные таблицы


 
Аббат Пиккола   (2012-12-05 14:31) [52]

2 MsGuns ©   (05.12.12 14:26) [51]

Я на InterBase вполне обхожусь без них.
Правда у меня много лет было одно преимущество - возможность порождать искусственные наборы с помощью ХП (оператор SUSPEND). Я слышал, что в последних версиях MS SQL тоже появилась такая возможность.


 
Аббат Пиккола   (2012-12-05 14:32) [53]

А вообще это неважно. Хотелось бы услышать ответ на MsGuns ©   (05.12.12 14:21) [48]


 
знайка   (2012-12-05 14:34) [54]

Да и не только временные таблицы, по месту надо смотреть что лучше, может юзердефайнтип, может xml может еще чего...
Вот запросы генерить это прошлый век.


 
O'ShinW ©   (2012-12-05 14:35) [55]


> MsGuns ©   (05.12.12 14:21) [48]

вы таки будете смеяться, но запросу > 10 лет и его реально правили так, что добавляли новые id непосредственно в текст.
т.е. раньше там, я так подозреваю, было пару значений. Потом добавляли и добавляли. За десять лет имеем экран! айдишков в перечислении.
Мне "выпало счастье" его поправить в очередной раз.
Решил безобразие остановить.

Кстати, хотел создать таблицу, и даже не временную, а постоянную, и задокументировать ее добавление, как таблу под отчетность. С написанием интерфейса аля проект1.dpr, что бы манагеры сами решали какие группы туда добавить.

Но, имхо, красиво выходит, если искать лайком.
выдрал все id и запросил. В поле Name у всех есть слово "физические", точнее, "изически"

зы
Кстати, Серега, тебя я всегда внимательно читаю


 
MsGuns ©   (2012-12-05 14:43) [56]

>O"ShinW ©   (05.12.12 14:35) [55]
>За десять лет имеем экран! айдишков в перечислении.

Судя по этой фразе, надо срочно весь проект "в печку !" (с)


 
Аббат Пиккола   (2012-12-05 14:46) [57]

В поле Name у всех есть слово "физические", точнее, "изически"

Это какое-то случайное совпадение?

Может быть лучше добавить колонку булевого типа, обозначающий "изичность" в ту таблицу, к которой собираетесь применять лайк? И однажды произвести там UPDATE с этим лайком? А в дальнейшем пусть манагеры, создавая там записи сами птичку ставят,  в зависмости от того, "изический" у них объект там или не "изический". А то ведь "изический" с ошибкой ("изищеский") может как-нибудь сыграть злую шутку.


 
MsGuns ©   (2012-12-05 14:47) [58]

Удалено модератором


 
O'ShinW ©   (2012-12-05 15:00) [59]


> Аббат Пиккола   (05.12.12 14:46) [57]

может. Я уж думал.
Например, напишут в имени аля "только юридические, но не физические лица"
и в отчет попадет как "%изически%"
Но они только пишут служебки о добавлении, а уже добавляем мы, согласовывая м/д собой. На таком согласовании и выясняются необходимости правок.


> MsGuns ©   (05.12.12 14:47) [58]

Постепенно переводим, последние 2 года. На уракл, где совсем по-другому все будет. А пока приходится поддерживать недобитки.
Возможно, еще с год :)


 
знайка   (2012-12-05 15:02) [60]


> Но, имхо, красиво выходит, если искать лайком.
ну вот, а тут копья ломают :)


 
Аббат Пиккола   (2012-12-05 15:03) [61]

2 MsGuns ©   (05.12.12 14:47) [58]

 Я на днях видел фотку (знакомая зафиксировала распространенное явление в Непале). Когда у монахов и прочих местных жителей заканчиваются кизяки, на тот случай у них имеются солнечные батареи.


 
Аббат Пиккола   (2012-12-05 15:07) [62]

Кто сказал, что солнечные батареи это повод сразу отказываться от кизяков? Я понимаю, что мы тут страна богатая... Ресурсами людскими и прочими. А вот бедные непальцы полагают иначе и экономят на всем.


 
Дмитрий С ©   (2012-12-05 15:10) [63]

Удалено модератором


 
Кука съела ник   (2012-12-05 15:42) [64]

наивный Талейран   (05.12.12 12:13) [30]


> там только синтаксически объединение


В одном случае обращение к одной таблице, в другом к двум.

Термин "синтаксически объединение" применительно к теории баз данных мне не знаком


 
наивный Талейран   (2012-12-05 16:01) [65]


> Кука съела ник   (05.12.12 15:42) [64]


> В одном случае обращение к одной таблице, в другом к двум.


в выборке нет данных из второй таблицы и записей мало, плюс, планировщик(хочется надеяться) может как ему заблагорассудится преобразовать такой запрос


 
Аббат Пиккола   (2012-12-05 16:09) [66]

Если так много сомнений, может вообще лучше ничего не трогать.

Я бы так долго не думал на эту тему, ей богу.
Значит там еще есть какой-то подводный камень...
Например, может быть очень хорошо для налогообложения, что какие-то ID находятся в специальном списке, который спрятан глубоко в недрах SQL-запросов.
А не в лежит у всех на виду в виде признака "Фирма-Поганка".


 
Аббат Пиккола   (2012-12-05 16:26) [67]

Благими намерениями можно испортить многое. Приходит вот так программист. Нормальный вроде бы человек. Видит, ряд фирм "ООО Вася" через один пробел, а часть, например,  "ООО  Сигизмунд." - через два пробела. Да еще и с точкой в конце. И думает, а не отформатировать ли мне все эти фирмы так, чтобы было красиво...
А потом прибегает бухгалтер в ужасе "Что Вы наделали!!!!"...
Ситуация придуманная, но такое вполне возможно.


 
Ваще имя   (2012-12-05 16:35) [68]

А меня раздражает нарицательный ID


 
O'ShinW ©   (2012-12-05 16:40) [69]


> Аббат Пиккола   (05.12.12 16:26) [67]

Возможно, конечно.
И примерно такое и бывало. Устаканилось уже.

Не, все равно надо как то менять. Такое перечисление ни к чему.
А когда запросил по id и по имени,
выяснилось, что некоторые группы, например, уже не актуальные.
т.е. ничего страшного, что они там есть, но могло бы их и не быть.
т.е. актуальные группы именуются по правилу,
остальные же просто пустые, или их листья мертвые.
Если продолжать добавлять группы по правилу - они автоматически будут попадать. т.е. запрос больше не надо переписывать.

Хотя.. по идее, можно еще одну группу ввести. (ну или таблицу эту)


 
O'ShinW ©   (2012-12-05 16:43) [70]


> А меня раздражает нарицательный ID

чаще всего - меня тоже :)

Но если он например, ни к чему?
т.е. пусть таблица будет такая, где он не нужен.
Как истинный idот, я все равно введу его :)
Пусть будет. Сейчас не нужен, но неизвестно что потребуется завтра.


 
Кука съела ник   (2012-12-05 16:49) [71]

наивный Талейран   (05.12.12 16:01) [65]


> в выборке нет данных из второй таблицы и записей мало, плюс,
>  планировщик(хочется надеяться) может как ему заблагорассудится
> преобразовать такой запрос


Для исполнения запроса в первом случае потребуется обращение к одной таблице, во втором случае к двум, неважно, есть в выборке или нет.
При прочих равных условиях обращение к двум таблицам всегда требует больше ресурсов, чем к одной.


 
Ваще имя   (2012-12-05 17:09) [72]


> пусть таблица будет такая, где он не нужен
> Сейчас не нужен, но неизвестно что потребуется завтра

Из этого следует, что синтетический ключ можно ввести завтра с тем же успехом


 
Kerk ©   (2012-12-05 17:18) [73]


> Из этого следует, что синтетический ключ можно ввести завтра
> с тем же успехом

...и переписать все запросы.


 
наивный Талейран   (2012-12-05 17:31) [74]


> Кука съела ник   (05.12.12 16:49) [71]


> При прочих равных условиях обращение к двум таблицам всегда
> требует больше ресурсов, чем к одной.

Во второй таблице 50 записей, ща проверим:

PointOfTruth:

if (TimeSelectFromTwoTable - TimeSelectFromOneTable) < 0.0000000000001 then
 ShowMessage("Зануда")
else goto PointOfTruth;


 
Ваще имя   (2012-12-05 17:49) [75]


> goto

!!!



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

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

Наверх





Память: 0.61 MB
Время: 0.008 c
15-1354600784
O'ShinW
2012-12-04 09:59
2013.03.31
дольше ли будет запрос(MSSQL)?


15-1354371990
AlexKniga
2012-12-01 18:26
2013.03.31
Использование ICQ и права на текст сообщений


2-1348575201
ankazh
2012-09-25 16:13
2013.03.31
Раскладка клавиатуры


2-1348238497
n_sch
2012-09-21 18:41
2013.03.31
Выборка данных из файла


15-1353699619
Пит
2012-11-23 23:40
2013.03.31
ЖКХ развод?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский