|
|
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
ддддддВыполнял я проект для одной известной в Москве компании, по переводу базы с MS SQL на Oracle. Могу с уверенностью сказать, некотороые "сложные" процедуры, которые разработчики не мыслили себе без использования временных таблиц, я заменял процедурами в оракле, состоящими из одного запроса. Уважаемый, не всегда с точки зрения эффективности все можно решить одним запросом. В частности в MS SQL довольно часто временный таблицы\табличные перменные используются, когда надо получить данные с линкованных серверов, обработать их и\или раскидать по локальным таблицам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 09:14 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
pkarklinддддддВыполнял я проект для одной известной в Москве компании, по переводу базы с MS SQL на Oracle. Могу с уверенностью сказать, некотороые "сложные" процедуры, которые разработчики не мыслили себе без использования временных таблиц, я заменял процедурами в оракле, состоящими из одного запроса. Уважаемый, не всегда с точки зрения эффективности все можно решить одним запросом. В частности в MS SQL довольно часто временный таблицы\табличные перменные используются, когда надо получить данные с линкованных серверов, обработать их и\или раскидать по локальным таблицам. Что-то задача у Вас меняется от поста к посту. После того, как я написал пример, как проапдейтить таблицу, не используя временную таблицу, почему-то оказалось, что ничего редактировать не надо, а надо вернуть данные клиенту. теперь оказывается, что надо сделать запрос с линкованных серверов (хотя в синтаксис запросов отличается только добавлением ликов после имени тиблицы типа @myLink). Вы ж определите, какую задачу невозможно решить без использования временных таблиц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 09:24 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
ддддддЧто-то задача у Вас меняется от поста к посту. После того, как я написал пример, как проапдейтить таблицу, не используя временную таблицу, почему-то оказалось, что ничего редактировать не надо, а надо вернуть данные клиенту. теперь оказывается, что надо сделать запрос с линкованных серверов (хотя в синтаксис запросов отличается только добавлением ликов после имени тиблицы типа @myLink). Вы ж определите, какую задачу невозможно решить без использования временных таблиц? У меня ничего не меняется. Все перечисленные мной ранее пункты остаются в силе. Но, кмк, Вы так и не поняли этих пунктов, ибо апдейчу я не физическую таблицу бд, а временную таблицу, потом делаю с временной таблицей дополнительные DML и только потом результирующим запросом возвращаю данные клиенту или распихиваются по физически таблицам бд. Сделайте мне, пожалуйста вставку данных в три таблицы и UPDATE двух других одним запросом из одного резалтсета, например. С линкованными запросами дело далеко не столько в синтаксисе. :) Не всегда оптимизатор может правильно определить на основании запроса, использующего и линкованного и локального сервера, какой запрос надо отправить на линкованный сервер, дабы только ту получить порцию данных, которую необходимо потом связать с данными локального сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 09:36 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
pkarklin[quot дддддд]Что-то задача у Вас меняется от поста к посту. После того, как я написал пример, как проапдейтить таблицу, не используя временную таблицу, почему-то оказалось, что ничего редактировать не надо, а надо вернуть данные клиенту. теперь оказывается, что надо сделать запрос с линкованных серверов (хотя в синтаксис запросов отличается только добавлением ликов после имени тиблицы типа @myLink). Вы ж определите, какую задачу невозможно решить без использования временных таблиц? pkarklin У меня ничего не меняется. Все перечисленные мной ранее пункты остаются в силе. Но, кмк, Вы так и не поняли этих пунктов, ибо апдейчу я не физическую таблицу бд, а временную таблицу, потом делаю с временной таблицей дополнительные DML и только потом результирующим запросом возвращаю данные клиенту или распихиваются по физически таблицам бд. Сделайте мне, пожалуйста вставку данных в три таблицы и UPDATE двух других одним запросом из одного резалтсета, например. Насчет временной таблицы я в курсе. Почти каждая процедура в MS SQL начинается с создания временной таблицы, редактирования в процессе работы, слива данных и удаления в конце процедуры. Такова философия MS SQL. pkarklin С линкованными запросами дело далеко не столько в синтаксисе. :) Не всегда оптимизатор может правильно определить на основании запроса, использующего и линкованного и локального сервера, какой запрос надо отправить на линкованный сервер, дабы только ту получить порцию данных, которую необходимо потом связать с данными локального сервера. Вот этого я не понял. Я всегда считал, что запросы пишутся программистами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 09:52 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
Что касается случаев, когда действительно нельзя обойтись без временной таблицы (в основном для хранения ID и еще нескольких служебных полей), создается ОДНА Temprorary таблица (не внутри процедуры, а как обычная таблица) и используется для хранения каких-то временных данных из разных процедур одновременно, т.к. Оракл четко прослеживает изоляцию транзакций и пересечение даннах от разных процедур исключено. Ну и чистит он их сам после завершения транзакции... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 10:00 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
дддддд Почти каждая процедура в MS SQL начинается с создания временной таблицы, редактирования в процессе работы, слива данных и удаления в конце процедуры. Вы утрируете, IMHO. ддддддВот этого я не понял. Я всегда считал, что запросы пишутся программистами. Что-такое распределенный запрос вызнаете, надеюсь?! В запросе вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. оптимизатору локального сервера надо принять решение какой запрос отправить на linkedserver, дабы он там выполнился и данные от него были получены. Не всегда оптимизатор запросов на основании данные, предоставляемых провайдером от удаленного сервера может это корректно сделать и может попытаться тупо потащить все данные из t2. В качесте решения м.б. использовано заполнение временной таблицы данными только с удаленного сервера и потом их объединение с данными локального или использование вместо времянок Pass-Through Queries, которые явно будут выполняться на линкованом сервере. Какой вариант будет выигрышнее по производительности следует определять в каждом конкретном слуае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 10:08 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
А если указать хинты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 10:11 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
дддддЧто касается случаев, когда действительно нельзя обойтись без временной таблицы (в основном для хранения ID и еще нескольких служебных полей), создается ОДНА Temprorary таблица (не внутри процедуры, а как обычная таблица) и используется для хранения каких-то временных данных из разных процедур одновременно, т.к. Оракл четко прослеживает изоляцию транзакций и пересечение даннах от разных процедур исключено. Ну и чистит он их сам после завершения транзакции... Закат солнца вручную, очень похожий на глобальные временные таблицы в MS SQL. Одной изоляцией транзакций (которая ничуть не хуже, а даже "лучше" "прослеживается" в MS SQL) здесь не обойдешься. Расскажите, пожалуйста, как он их "чистит сам". Например, в MS SQL локальная временная таблица видна только сесии, в которой она создана и не надо никаких заморочек с транзакциями и разделением между сессиями. Более того, локальная временная таблица, созданная в хп, автоматически удаляется при выходе из хп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 10:12 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
ддддддА если указать хинты? Какие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 10:12 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
pkarklinддддддА если указать хинты? Какие? по индексу например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 10:18 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
pkarklinдддддЧто касается случаев, когда действительно нельзя обойтись без временной таблицы (в основном для хранения ID и еще нескольких служебных полей), создается ОДНА Temprorary таблица (не внутри процедуры, а как обычная таблица) и используется для хранения каких-то временных данных из разных процедур одновременно, т.к. Оракл четко прослеживает изоляцию транзакций и пересечение даннах от разных процедур исключено. Ну и чистит он их сам после завершения транзакции... Закат солнца вручную, очень похожий на глобальные временные таблицы в MS SQL. Одной изоляцией транзакций (которая ничуть не хуже, а даже "лучше" "прослеживается" в MS SQL) здесь не обойдешься. Расскажите, пожалуйста, как он их "чистит сам". Например, в MS SQL локальная временная таблица видна только сесии, в которой она создана и не надо никаких заморочек с транзакциями и разделением между сессиями. Более того, локальная временная таблица, созданная в хп, автоматически удаляется при выходе из хп. Закат солнца вручную - это руками создавать временные таблицы в каждой процедуре. Локальные переменные на то ли локальные, чтобы быть видимыми только внутри процедуры и удаляться при выходе из процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 10:22 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
ддддддпо индексу например Вах, Вах, Вах... Причем тут индексы?! IMHO, Вы слабо себе представляете архитектуру распределенных запросов между двум клиент\серверными СУБД. Локальному оптимизатору запросов на основании парсинга запросов и анализа локальных метаданных и удаленных метаданных надо понять, какой на линкованный сервер надо отправлять запрос, такой: Код: plaintext 1. 2. 3. 4. 5. и получив с него данные локально делать, например, MERGE JOIN. Или использовать NESTED LOOPS, дабы на удаленный сервер для каждой записи локального отправлять запрос вида: Код: plaintext 1. 2. 3. 4. 5. 6. Более того, в запросах с Four-Part Names в MS SQL нельзя использовать хинты для объектов на удаленном сервере, ибо локальный оптимизатор не может их использовать при формировании запроса к удаленному серверу. Вот в Pass-Through Queries их можно использовать. Т.е. это ситуация, когда разработчик берет часть работы оптимизатора на себя. ддддддЗакат солнца вручную - это руками создавать временные таблицы в каждой процедуре. Локальные переменные на то ли локальные, чтобы быть видимыми только внутри процедуры и удаляться при выходе из процедуры. Смешались в кучу - кони, люди... ((с) Бородино) Я говорил о локальных временных таблицах, а не о переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 10:34 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
Не ради холивара а общего развития для :) В MSSQL есть ряд очень удобных для DBA вещей. 1) Можно собрать, так называемым, профайлером все интересующие DBA события на сервере, собрать с помощью Perfmon,а статистику по счетчикам системы. Затем наложить данные от Perfmon на данные профайлера в виде наглядных графиков. 2) Статистику по многим параметрам работы сервера есть в динамических представлениях и ее можно посмотреть в любой момент. 3) С помощью собранной профайлером статистики можно нагрузить новый MSSQL сервер для прогнозирования его поведения не под абстрактной а под конкретной нагрузкой. IMHO, MSSQL пользуют много, в том числе и из за большого количества удобств в администрировании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 10:52 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
Добрались до администрирования... Хотя спор был о необходимости использования временных таблиц в хранимках, потом перескочили на распреленные базы. Куда дальше понесет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 11:02 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
дддддХотя спор был о необходимости использования временных таблиц в хранимках, потом перескочили на распреленные базы. Куда дальше понесет? Аргументы закончились, что-ли? Т.е. Вам нечего больше сказать в части использования временных таблиц при распределенных вычислениях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 11:07 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
дддддДобрались до администрирования... Хотя спор был о необходимости использования временных таблиц в хранимках, потом перескочили на распреленные базы. Куда дальше понесет? Это я применительно к исходному посту. Что касается споров о применимости tmp tables то, IMHO, pkarklin в Вашем лице кормит троля :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 11:11 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
ИМХО товарищи вы сильно ушли от темы. Мне кажется, что MS SQL любят за то, что он проще, ОСОБЕННО на начальном этапе освоения. Мое лично мнение, что у MS SQL очень удобный и очень простой GUI для работы с базами. Хотя сам иногда юзаю TOAD, но родной GUI мне нравиться значительно больше. Плюс BOL, это просто спасение для новичка. Взял MS SQL, взял студию и без каких либо дополнительных телодвижении пишешь программы для работы с БД, хоть на шарпе, хоть на VB, хоть на ++. С другими средами разработки периодически сталкивался с проблемами поиска нормального драйвера к БД. В частности с netbeans. У MS же все готово и все работает можно сказать из коробки. Плюс родная реализация LINQ, который очень удобен. C MS, новичок может нормально обучаться в процессе освоения, а когда он обучился, ему уже на, что-то другое, после MS GUI, слезать не хочется, да и не за чем. Мне лично, у MS SQL не хватает только единого генератора идентификаторов на несколько таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 11:47 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
pkarklinдддддХотя спор был о необходимости использования временных таблиц в хранимках, потом перескочили на распреленные базы. Куда дальше понесет? Аргументы закончились, что-ли? Т.е. Вам нечего больше сказать в части использования временных таблиц при распределенных вычислениях? Я уже сказал, что временные таблицы - это особенность MS SQL. Кому-то она нравится, а кому то нет. Например меня не устраивает в Интербейзе, что для вывода курсора из процедуры надо для каждого поля создавать выходящую переменную и явно укладывать поля запроса в эти переменные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 11:51 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
ддддддВыполнял я проект для одной известной в Москве компании, по переводу базы с MS SQL на Oracle. Могу с уверенностью сказать, некотороые "сложные" процедуры, которые разработчики не мыслили себе без использования временных таблиц, я заменял процедурами в оракле, состоящими из одного запроса. :) Вы знаете, после того, как я после перевода вычищал из портированных с оракла БД все типично оракловые приколы - процедуры становились значительно проще, читабельнее и быстрее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 12:29 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
ддддНапример меня не устраивает в Интербейзе, что для вывода курсора из процедуры надо для каждого поля создавать выходящую переменную и явно укладывать поля запроса в эти переменные. в IB/FB нет "вывода курсора из процедуры". есть "селективные" процедуры, которые могут прикидываться "таблицами". А что из них "выводится" - по барабану. Реальные данные из таблиц, view, сложные вычисления, факториал - без разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 12:29 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
nApoBo3ИМХО товарищи вы сильно ушли от темы. Мне кажется, что MS SQL любят за то, что он проще, ОСОБЕННО на начальном этапе освоения. Мое лично мнение, что у MS SQL очень удобный и очень простой GUI для работы с базами. Хотя сам иногда юзаю TOAD, но родной GUI мне нравиться значительно больше. Плюс BOL, это просто спасение для новичка. Взял MS SQL, взял студию и без каких либо дополнительных телодвижении пишешь программы для работы с БД, хоть на шарпе, хоть на VB, хоть на ++. С другими средами разработки периодически сталкивался с проблемами поиска нормального драйвера к БД. В частности с netbeans. У MS же все готово и все работает можно сказать из коробки. Плюс родная реализация LINQ, который очень удобен. C MS, новичок может нормально обучаться в процессе освоения, а когда он обучился, ему уже на, что-то другое, после MS GUI, слезать не хочется, да и не за чем. Мне лично, у MS SQL не хватает только единого генератора идентификаторов на несколько таблиц. Все правильно! Однако тут еще важно как продукция продвигается на рынок компанией производителем. В свете этого интересно порассуждать о Sybase ASE и MsSql как пример развития одного продукта в разных компаниях с совершенно разным подходом к развитию продукта и политике его продаж. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 12:44 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
lockyддддддВыполнял я проект для одной известной в Москве компании, по переводу базы с MS SQL на Oracle. Могу с уверенностью сказать, некотороые "сложные" процедуры, которые разработчики не мыслили себе без использования временных таблиц, я заменял процедурами в оракле, состоящими из одного запроса. :) Вы знаете, после того, как я после перевода вычищал из портированных с оракла БД все типично оракловые приколы - процедуры становились значительно проще, читабельнее и быстрее :) Про приколы поподробнее можно? Интересно, символ "@" перед каждой переменной, в MS SQL ставится для чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 13:24 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
дддддИнтересно, символ "@" перед каждой переменной, в MS SQL ставится для чего? Да вот для того, чтобы избежать этого: Покритикуйте Оракл 10г ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 13:59 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
дддддИнтересно, символ "@" перед каждой переменной, в MS SQL ставится для чего? чтобы отличать переменную от имени поля на самом деле очень удобно - когда большой запрос сразу бросается в глаза встречный вопрос - таблица DUAL для чего нужна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 14:04 |
|
||
|
За что так любят MS MSQL
|
|||
|---|---|---|---|
|
#18+
SergSuperвстречный вопрос - таблица DUAL для чего нужна? Видимо, потому что SELECT без FROM опять же не соответствует стандарту... http://www.netaktive.org/Norme-SQL3-ANSI-BNF.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 14:18 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=35910238&tid=1552903]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 143ms |

| 0 / 0 |
