Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Новости сайта "Упражнения по SQL" (http://www.sql-ex.ru) 101


Новости сайта "Упражнения по SQL (http://www.sql-ex.ru)" Выпуск 101 (19 августа 2006 г.)

http://www.sql-ex.ru

Новым посетителям сайта

Сайт посвящен изучению языка, с помощью которого осуществляется взаимодействие с реляционными (и не только) СУБД. Суть обучения состоит в выполнении заданий на написание запросов к учебным базам данных; при этом система контролирует правильность выполнения заданий. В настоящее время реализованы все операторы подъязыка манипуляции данными (DML), которые включают в себя оператор извлечения данных SELECT, а также операторы модификации данных - INSERT, DELETE и UPDATE.

Мы надеемся, что справочного материала сайта окажется достаточно для самостоятельного обучения. Кроме того, свои решения вы можете обсудить на форуме сайта. Опытных же специалистов приглашаем проверить (продемонстрировать) свое мастерство и принять участие в соревновании, обеспечиваемом рейтинговой системой учета времени выполнения заданий. Фактически, рейтинг ведется на втором этапе тестирования, который начинается сейчас после решения 58-ти задач первого этапа. При подсчете рейтинга каждого участника отбрасывается один самый худший показатель среди всех решенных им упражнений.

Демонстрация плана выполнения запроса и сравнительная оценка эффективности решений поможет вам освоить принципы оптимизации запросов.

Имеется возможность получить сертификат по SQL DML при выполнении определенного количества заданий.


Новости сайта

§ Реализовали предложение maxifly относительно кнопочки с рейтинговой позицией, которую можно разместить на своем сайте. Естественно, кнопка работает как счетчик, показывая текущую рейтинговую позицию на момент обновления страницы, где она размещена.
Доступ к коду кнопки можно получить с персональной страницы на вкладке "Рейтинг и решенные задачи".

§ imsh заметил, что в английских формулировках задач 105-108 отсутствует дефис в типах самолетов, что противоречит данным в базе. Исправил.
Также в английской формулировке задачи 30 неправильно был указан порядок вывода столбцов, на что указал ash. И здесь адекватные меры уже приняты.

§ Идя навстречу неоднократным пожеланиям указать на суммарный характер времени в задаче 117, принял изменение формулировки в редакции =Maxim=.

§ Новые люди в сотне:
PS_Sergey (задач 109, время 5.542)
imsh (109, 32.442)

§ Сохранили шансы попасть в ТОР 10:
ЕО (119, 16.137)
loki (117, 7.163)
SolYUtor (117, 8.471)

§ Продолжили свое восхождение к вершине:
Sp999 (129, 37.870)
FanOfBeer (121, 78.537)
Robin (121, 75.553)
Johnny (115, 130.067)
Ocean (113, 41.646)

§ Число подписчиков - 3244

Число участников рейтинга - 6402

Число участников второго этапа - 645

Сертифицировано на сайте - 85

Лучшие результаты (ТОР 20)

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 LastSolved LastVisit
1 Войнов П.Е. (pаparome) 138 47 20 323 348 2.680 07 Aug 2006 18 Aug 2006
2 Юлдашев М.Р. (Snowbear) 138 47 20 323 383 4.055 05 Aug 2006 18 Aug 2006
3 Мурашкин И.В. (lepton) 138 47 20 323 136 10.134 06 Aug 2006 18 Aug 2006
4 Иванов А.Н. (Goapsy) 138 47 20 323 270 18.919 07 Aug 2006 07 Aug 2006
5 Голубин Р.С. (Roman S. Golubin) 138 47 20 323 353 21.138 06 Aug 2006 17 Aug 2006
6 Карасёва Н.В. (vlksm) 138 47 20 323 92 24.922 06 Aug 2006 12 Aug 2006
7 Кувалкин К.С. (Cyrilus) 137 47 20 321 623 9.768 09 Aug 2006 18 Aug 2006
8 Валуев Д.И. (Fiolent) 137 92 20 321 1069 54.545 08 Aug 2006 18 Aug 2006
9 Абашин П.И. (Dizil) 137 47 20 319 348 3.903 07 Aug 2006 11 Aug 2006
10 Самохвалов В. (ValdemarES) 137 47 20 319 273 7.850 17 Aug 2006 18 Aug 2006
11 Тарасов Д.Б. (Gavrila) 136 47 20 318 346 19.382 07 Aug 2006 18 Aug 2006
12 Slobodcicov A.N. (Testo) 135 138 20 316 252 6.707 01 Jun 2006 08 Aug 2006
13 Kamaev V.M. (Heromantor) 135 138 20 316 128 9.044 14 Mar 2006 25 Mar 2006
14 Бураков С.Г. (burakov58) 135 138 20 316 419 17.381 24 Mar 2006 07 Apr 2006
15 frenkental (a2010) 135 137 20 315 110 15.332 19 Jul 2006 26 Jul 2006
16 Крижевич С.А. (yaff) 135 47 20 314 407 14.792 11 Aug 2006 11 Aug 2006
17 Зырин В.Е. (Vezyr) 135 47 20 314 204 20.590 05 Aug 2006 12 Aug 2006
18 Страшников А.С. (EffEct) 135 47 20 314 452 59.948 10 Aug 2006 10 Aug 2006
19 Зверев Д.Л. (dimzv) 134 137 20 312 869 3.272 22 Mar 2006 08 Jul 2006
20 Носков Н.В. (niko2) 134 137 20 312 274 8.452 06 Apr 2006 16 May 2006

Лучшие результаты за неделю

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 Абшарипов И. (ils) 40 40 73 26 99 881 17 Aug 2006
2 >Литвинова Е. (Elena L) 45 45 73 19 92 981 18 Aug 2006
3 Наскальнюк А.Н. (nan) 41 41 75 15 90 980 16 Aug 2006
4 >Sharovarov A. (ash) 48 48 86 0 86 1068 18 Aug 2006
5 >Кружков (magnitt) 43 43 78 0 78 1222 18 Aug 2006
6 Петунин С.А. (Джавакка) 28 48 58 18 76 675 18 Aug 2006
7 >Bangga E.N. (metalhacker) 27 45 55 20 75 826 18 Aug 2006
8 ovs (ovcebuh) 40 48 75 0 75 1112 15 Aug 2006
9 schegel (sem) 38 38 69 0 69 1460 17 Aug 2006
10 >Б И.Т. (ild) 20 77 42 23 65 193 18 Aug 2006
11 Тихонова О.Я. (iojka) 34 40 59 3 62 1482 17 Aug 2006
12 >josabz J.J. (josabz) 26 42 56 3 59 1225 18 Aug 2006
13 Cherch B.G. (cherven) 34 34 59 0 59 1738 15 Aug 2006
14 Кривошлык О.Г. (Smuglyanka) 22 58 43 10 53 503 18 Aug 2006
15 Ким Е.Т. (Ака) 28 28 50 0 50 2057 18 Aug 2006
16 Сиголаева Ю.М. (Flo) 21 40 48 0 48 1365 18 Aug 2006
17 >Гильдебрант А.А. (Зембельдович) 27 27 46 1 47 2197 18 Aug 2006
18 Artemov A. (alexneon) 28 33 42 0 42 2201 16 Aug 2006
19 >Polygalov I.E. (PolygalovIvan) 13 55 34 5 39 694 18 Aug 2006
20 >Лощиниин А.А. (Garlic) 18 28 38 0 38 2147 18 Aug 2006
21 Bukin V. (VladB) 24 24 37 0 37 2598 13 Aug 2006
22 >Borisov S. (Force-Werewolf) 24 24 37 0 37 2611 18 Aug 2006
23 Борблик С. (S_E_R_G_E_Y) 24 24 37 0 37 2642 18 Aug 2006
24 >Палий С.А. (PS_Sergey) 14 109 35 0 35 79 18 Aug 2006
25 Korovaev D.A. (kda) 22 22 32 2 34 2866 17 Aug 2006
26 $_ ($_) 23 23 34 0 34 2872 18 Aug 2006
27 apahi (Petro) 12 51 28 5 33 935 15 Aug 2006
28 >Мельников М.В. (bankirus) 13 32 33 0 33 1786 18 Aug 2006
29 Бахирев В. (Volder) 22 22 33 0 33 3005 16 Aug 2006
30 >shtril I. (imsh) 12 109 31 0 31 81 18 Aug 2006
31 Мальцев А.В. (Палкин) 21 21 30 0 30 3231 18 Aug 2006

Изучаем SQL

Настройка операторов SQL на Microsoft SQL Server 2000 (продолжение, начало в вып.99)

Kevin Kline, Claudia Fernandez, Quest Software, Inc. (оригинал: Tuning SQL Statements on Microsoft SQL Server 2000)
Перевод Живенко Н.

Выходные данные SHOWPLAN

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

Следующая команда предписывает SQL Server показать план выполнения для каждого запроса, который будет выполнен следом за этой командой в том же самом соединении, или отключает эту возможность.

SET SHOWPLAN_TEXT { ON | OFF }

По умолчанию, SHOWPLAN_TEXT ON приводит к тому, что код, который вы тестируете, не выполняется. Вместо этого, SQL Server компилирует код и выводит для него план выполнения запроса. Такое поведение продолжается до тех пор, пока не будет выполнена команда SET SHOWPLAN_TEXT OFF.

Другие полезные команды оператора SET

Здесь представлены команды оператора SET, которые полезны для настройки и отладки. Ранее в этом документе мы уже рассматривали SET STATISTICS. Здесь же представлены другие команды SET, которые могут быть полезны в определенных ситуациях:

1. SET NOEXEC {ON|OFF}: проверяет синтаксис вашего кода Transact-SQL, включая компиляцию кода, но без его выполнения. Это бывает полезным для проверки синтаксиса запроса, воспользовавшись преимуществом, которое дает разрешение еще неопределенных имен (deferred-name resolution). Т.е. для проверки синтаксиса запроса к таблице, которая еще не была создана.

2. SET FMTONLY {ON|OFF}: возвращает клиенту только метаданные запроса. Для операторов SELECT это обычно означает вернуть только заголовки столбцов.

3. SET PARSEONLY{ON|OFF}: обычно проверяет синтаксис вашего кода Transact-SQL, но без его компиляции и выполнения. Все эти команды выполняются один раз оператором ON и действуют, пока явно не будут выключены (OFF). Их установка не приводит ни к какому результату, они начинают свою работу со следующего шага. Другими словами, вы должны использовать команду GO, прежде чем будут параметры SHOWPLAN или NOEXEC вступят в силу.

Типичный код T-SQL, который используется для получения плана выполнения запроса без фактического его выполнения, выглядит следующим образом:

SET SHOWPLAN_TEXT ON
GO
<запрос>
GO
SET SHOWPLAN_TEXT OFF
GO

Мы опишем выходные данные SHOWPLAN_TEXT на нескольких примерах. Для того чтобы сократить объем статьи, мы не будем повторять команды SET, описанные выше. Каждый пример этого раздела, представляет собой запрос, который должен быть подставлен вместо тега <запрос> данного скрипта и предполагает показанную выше "обертку".

Фактически существует две версии SHOWPLAN: SHOWPLAN_ALL и SHOWPLAN_TEXT. Информация, получаемая в результате их выполнения по существу одна и та же. Однако результат работы SHOWPLAN_ALL предназначен для обработки запроса графическими средствами, а не для рассмотрения пользователем. SHOWPLAN_TEXT, который мы использовали на протяжении всей нашей статьи, формирует выходные данные в более читабельном представлении. Следующий простой запрос выбирает все строки из таблицы authors. Здесь нет никакого другого выбора, кроме как сканировать всю таблицу, т.к. мы не использовали предложение WHERE:

SELECT * FROM authors

Результаты SHOWPLAN_TEXT не отформатированы, однако нам пришлось сильно ужать вывод команды SHOWPLAN_ALL, чтобы сделать его читабельным в нижеприведенной таблице.

SHOWPLAN_TEXT SHOWPLAN_ALL
StmtText
-----------------------------
|--Clustered Index Scan (OBJECT:([pubs].[dbo]. [authors].[UPKCL_auidind]))
StmtText
-----------------------------
|--Clustered Index Scan (OBJECT:([pubs].[dbo]. [authors].[UPKCL_auidind]))
StmtID NodeID Parent
------ ------ ------
2 1 0
PhysicalOp LogicalOp
--------------------- ----------------------
NULL NULL
Clustered Index Scan Clustered Index Scan

Argument
--------------------------------------------
1
OBJECT:([pubs].[dbo].[authors].[UPKCL_auidin d])
DefinedValues
--------------------------------------------
23
…<все столбцы таблицы>…
EstimatedRows EstimatedIO EstimatedCPU
------------- ------------ --------------
23 NULL NULL
23 0.01878925 5.1899999E-5
AvgRowSize TotalSubtreeCost
---------- -----------------
NULL 3.7682299E-2
111 3.7682299E-2
OutputList
-------------------------------------------
NULL
…<все столбцы таблицы>…
Warnings Type Parallel EstimateExecutions
------ --------- -------- ------------------
NULL SELECT 0 NULL
NULL PLAN_ROW 0 1.0

В этом и заключаются их существенное различие. Оператор SHOWPLAN_ALL возвращает множество полезной для настройки информации, но она тяжела для понимания и применения.

Операции SHOWPLAN

Некоторые из операций SHOWPLAN, иногда называемые "тегами" очень понятно объясняют работу SQL Server, в то время как другие наоборот озадачивают. Все эти операции делятся на физические и логические. Физические операции описывают физический алгоритм, используемый для выполнения запроса, например, осуществляющий поиск в индексе. Логические операции описывают такие операции реляционной алгебры, используемые оператором, как агрегация. Результаты SHOWPLAN делятся на шаги. Каждая физическая операция запроса представлена отдельным шагом. Обычно шаги включают логический оператор, но не все шаги содержат логические операции. Кроме того, большинство шагов содержат операцию (или логическую, или физическую) и аргумент. Аргументы представляют собой компонент запроса, на который воздействует операция.

Обсуждение всех шагов планов выполнения было бы недопустимо пространным. Поэтому вместо рассмотрения их здесь, вы можете обратиться к официальной статье "SHOWPLAN Output and Analysis" ("Выходные данные и анализ SHOWPLAN") доступный на http://www.quest.com/whitepapers/#ms_sql_server.

(Продолжение следует...)

Полезная информация

§ Все статьи, публикуемые в рассылке, затем выкладываются на сайте Книги и статьи по SQL.

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

Контакты

По всем вопросам, связанным с функционированием сайта, проблемами при решении упражнений, идеями вы можете обращаться к Сергею И.Моисеенко msi77@yandex.ru. Вы также можете предложить свои задачи для публикации на сайте.

Подписка Subscribe.Ru
Новости сайта "Упражнения по SQL"

В избранное