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

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


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

http://www.sql-ex.ru

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

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

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

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

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


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

§ Исправил баг с номерами задач в комбобоксе, в котором теперь участники третьего этапа будут видеть все задачи, поскольку они могут их решать в любом порядке.

§ Обновил описания баз данных на английском языке, ошибки в которых любезно исправил mikew. На очереди английские формулировки задач.

§ Подлатал проверку задачи 62. Еще в июне Родион1976 отметил неучтенный в проверочной базе вариант данных, а paparome и vasily terkin напомнили. Вода камень точит :-).
Я фиксирую все замечания относительно проверки, но не всегда удается оперативно реагировать.

§ Johan стал пока третьим участником, который решил все задачи. В результате - третье место в рейтинге. Думаю, что в ближайшее время к ним присоединится KERBEROS, который очень агрессивно финиширует и уже начал решать 140-ю задачу. Также в одном шаге до финиша находится MadVet, решивший на этой неделе 139-ю задачу (кстати, мы ждем фотографию на доску почета :-)).
Уже 7 человек решили задачи третьего этапа.

§ Скоро десятка будет полностью сформирована участниками третьего этапа. Видимо, это последний выпуск, когда я оцениваю шансы на попадание в десятку по итогом второго этапа. В дальнейшем смысла в этом не будет, т.к. шансы попасть в десятку появятся у каждого, у кого хватит терпения и мастерства, чтобы дойти до третьего этапа.
Последний шаг до десятки остался прежнему лидеру dimsv (задач 137, время 3.663) и Палкин'у (137, 15.229).
Два шага - PS_Sergey (136, 9.290)
Три шага - alex_v (135, 22.387)

§ Продолжили свое восхождение к вершине:
Ocean (131, 47.210)
=Maxim= (129, 19.697)
arm (118, 32.975)
Родион1976 (111, 1.095)
snikol (106, 45.497)

§ На этой неделе сертифицированы:
IAS56 (A06012849) [BK] (г.Артем, Россия)
Лёшик (A06010301) [BK] (г.Омск, Россия)

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1 Карасёва Н.В. (vlksm) 140 140 20 329 151 27.838 2.709 7 04 Oct 2006 13 Oct 2006
2 Мурашкин И.В. (lepton) 140 140 20 329 199 13.712 3.581 7 08 Oct 2006 13 Oct 2006
3 Васьков Е.В. (Johan) 140 140 20 329 85 12.705 11.402 7 12 Oct 2006 13 Oct 2006
4 Войнов П.Е. (pаparome) 139 140 20 326 407 2.687 .000 4 05 Oct 2006 13 Oct 2006
5 Юлдашев М.Р. (Snowbear) 139 139 20 325 441 4.106 .000 3 02 Oct 2006 10 Oct 2006
6 >Агапов В. (KERBEROS) 139 139 20 325 51 5.143 .231 3 13 Oct 2006 13 Oct 2006
7 Держальцев В.А. (MadVet) 139 139 20 325 540 34.249 3.085 3 08 Oct 2006 13 Oct 2006
8 Валуев Д.И. (Fiolent) 138 138 20 322 1125 54.696 .000 0 03 Oct 2006 13 Oct 2006
9 Slobodcicov A.N. (Testo) 137 138 20 320 337 7.171 .000 0 25 Aug 2006 13 Oct 2006
10 Кувалкин К.С. (Cyrilus) 137 138 20 320 669 9.797 .000 0 24 Sep 2006 27 Sep 2006
11 Иванов А.Н. (Goapsy) 137 138 20 320 270 18.911 .000 0 07 Aug 2006 09 Oct 2006
12 Голубин Р.С. (Roman S. Golubin) 137 138 20 320 353 21.131 .000 0 06 Aug 2006 12 Oct 2006
13 Зверев Д.Л. (dimzv) 137 137 20 318 1070 3.663 .000 0 09 Oct 2006 09 Oct 2006
14 Мальцев А.В. (Палкин) 137 137 20 318 56 15.229 .000 0 12 Oct 2006 13 Oct 2006
15 Тарасов Д.Б. (Gavrila) 136 138 20 317 402 19.425 .000 0 02 Oct 2006 13 Oct 2006
16 Абашин П.И. (Dizil) 136 137 20 316 348 3.901 .000 0 07 Aug 2006 03 Oct 2006
17 Самохвалов В. (ValdemarES) 136 137 20 316 273 7.848 .000 0 17 Aug 2006 13 Oct 2006
18 Солдатенков Ю.С. (SolYUtor) 136 137 20 316 111 12.905 .000 0 06 Sep 2006 13 Oct 2006
19 Палий С.А. (PS_Sergey) 136 136 20 314 157 9.290 .000 0 07 Oct 2006 13 Oct 2006
20 Страшников А.С. (EffEct) 135 137 20 314 483 61.849 .000 0 10 Sep 2006 09 Oct 2006

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 Чижов А.Е. (cmalex) 59 59 109 30 139 412 13 Oct 2006
2 >Тюнин Е.Б. (Tunin) 48 63 97 21 118 353 13 Oct 2006
3 >Соколов Ю.Е. (Funny Falcon) 58 58 108 3 111 711 13 Oct 2006
4 >Фалелеев Д.А. (Dmitry Faleleev) 45 45 79 32 111 713 13 Oct 2006
5 >Бесова К.О. (Ксения_) 55 55 102 9 111 716 13 Oct 2006
6 >Волков А.Ю. (valex847) 56 56 104 3 107 782 13 Oct 2006
7 Zubareva T. (Antonida) 47 47 81 19 100 944 12 Oct 2006
8 romko R. (Romko) 43 55 89 0 89 887 13 Oct 2006
9 >Karаtunov Y. (yka) 47 47 85 0 85 1216 13 Oct 2006
10 Бартов (DW) 44 44 78 0 78 1364 12 Oct 2006
11 >Станкевич Э.Л. (Edward_rost) 30 58 59 17 76 584 13 Oct 2006
12 >Муравьёва Л.А. (ladika) 16 55 37 32 69 493 13 Oct 2006
13 ФИО (псевдоним_еще_один) 39 39 69 0 69 1617 12 Oct 2006
14 * L.V. (Aoy-chan) 23 40 54 10 64 1104 11 Oct 2006
15 >Виноградов С.М. (Botch) 40 40 63 0 63 1773 13 Oct 2006
16 Сабуров Д.И. (HiMik2003) 34 34 60 0 60 1891 11 Oct 2006
17 >Sherikhan B. (Dosbek) 32 34 58 0 58 1913 13 Oct 2006
18 >Burdakov N.L. (Nik_B) 32 32 58 0 58 1957 13 Oct 2006
19 >Elizarov A.O. (Mr.Virus) 29 58 56 0 56 769 13 Oct 2006
20 >Савостьянов (SavostyanovK) 24 40 53 0 53 1515 13 Oct 2006
21 stp (_stp_) 32 32 53 0 53 2160 09 Oct 2006
22 >Terkin V.I. (vasily terkin) 7 71 19 32 51 257 13 Oct 2006
23 >Горбачев Р.В. (rad) 29 29 51 0 51 2268 13 Oct 2006
24 Lebedenko N.N. (Totx) 28 28 49 0 49 2366 12 Oct 2006
25 Замосковный Д.А. (BIeZ) 15 45 25 23 48 928 13 Oct 2006
26 waduh (smilee) 30 30 39 9 48 2431 13 Oct 2006
27 Юрковец Н. (yna) 21 86 46 0 46 175 12 Oct 2006
28 >Румянцев О.Ю. (Rolf) 20 58 41 0 41 766 13 Oct 2006
29 Trinh T. (mtinc) 24 24 39 1 40 2754 13 Oct 2006
30 >Писин Г. (Гнома Писин) 25 25 40 0 40 2766 13 Oct 2006

Изучаем SQL

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

Настройка производительности Microsoft T-SQL. Часть 1: Анализ и оптимизация производительности запросов T-SQL, используя SET и DBCC

Kevin Kline, Quest Software, Inc. (оригинал: Microsoft T-SQL Performance Tuning. Part 1: Analyzing and Optimizing T-SQL Query Performance on Microsoft SQL Server using SET and DBCC)
Перевод Живенко Н.

DBCC

DBCC является аббревиатурой для Database Consistency Check (контроль непротиворечивости базы данных) и имеет множество полезных опций. Он является самым известным (или позорным) средством, которое применяется администраторами баз данных для проверки непротиворечивости базы данных и поиска повреждений посредством таких команд как DBCC CHECKDB, DBCC NEWALLOC, DBCC CHECKCATALOG и других. Однако DBCC имеет много дополнительных опций, и некоторые из них могут быть полезны при программировании на T-SQL.

DBCC SHOW_STATISTICS

Эта команда очень полезна при анализе эффективности индексов. Вы можете использовать эту команду, чтобы определить, может ли оптимизатор запроса эффективно использовать индекс или нет. Команда показывает статистические данные для определенного индекса в конкретной таблице. Синтаксис команды:

DBCC SHOW_STATISTICS ( имя_таблицы, имя_индекса )

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

Можно сказать, что плотность индекса противоположна селективности. Селективные индексы имеют низкую плотность. Индексы с высокой плотностью не очень селективны и вряд ли будут использоваться оптимизатором в планах выполнения запроса.

Пример:

USE northwind
GO
DBCC SHOW_STATISTICS ( [Order Details], OrderID )
GO

Результаты:

Statistics for INDEX 'OrderID'.
Updated Rows Rows Sampled Steps Density Average key length
Mar 26 2002 8:46AM 2155 2155 187 1.118621E-3 8.0
(1 row(s) affected)
All density Average Length Columns
1.2048193E-3 4.0 OrderID
1.2048193E-3 8.0 OrderID, ProductID
(2 row(s) affected)
RANGE_HI_KEY RANGE_ROWS EQ_ROWS DISTINCT_RANGE_ROWS AVG_RANGE_ROWS
10248 0.0 3.0 0 0.0
10253 11.0 3.0 4 2.75
10256 7.0 2.0 2 3.5
11070 10.0 4.0 5 2.0
11075 9.0 3.0 4 2.25
11076 0.0 3.0 0 0.0
11077 0.0 25.0 0 0.0
(187 row(s) affected) DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Если мы перемножим число, указанное выше в столбце ALL density на общее количество строк, то мы сможем определить, сколько строк соответствует одному и тому же полному или частичному ключу. В данном примере, ключ, состоящий из значений столбцов OrderID и ProductID обеспечивает превосходную селективность: 0.00120483 * 2155 = 2.5963855915. Селективность равная единице означает, что любой ключ, определенный данными столбцами, соответствует только одной строке в таблице - совершенная селективность. Другие значения возвращаемые командой DBCC также полезны:

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ ОПИСАНИЕ
Updated Дата и время когда было произведено последнее обновление статистических данных индекса
Rows Общее число строк в таблице
Rows Sampled Число строк в выборке, которое использовалось для получения информации о статистических данных индекса
Steps Число шагов в распределении.
Density Селективность первого столбца составного индекса
Average key length Средняя длина первого столбца составного индекса
All density Селективность набора индексных столбцов от начала
Average Length Средняя длина набора индексных столбцов от начала
Columns Имена индексных столбцов в наборе от начала, для которых выводится показатель All density и Average length
RANGE_HI_KEY Верхняя граница значений шага гистограммы
RANGE_ROWS Число строк из выборки, которые находятся в пределах шага гистограммы, без учета верхней границы
EQ_ROWS Число строк из выборки, которые эквивалентны значению верхней границы шага гистограммы
DISTINCT_RANGE_ROWS Число различных значений пределах шага гистограммы, без учета верхней границы.
AVG_RANGE_ROWS Среднее число дубликатных значений в пределе шага гистограммы, без учета верхней границы (определяемое как RANGE_ROWS /DISTINCT_RANGE_ROWS для DISTINCT_RANGE_ROWS > 0).

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

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

§ В очередной Премии Рунета каждый посетитель может проголосовать за 12 понравившихся ему ресурсов.
Если вы решитесь принять участие в голосовании, надеюсь, что среди 12 ваших предпочтений найдется место и нашему сайту :-).

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

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

Контакты

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

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

В избранное