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

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


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

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

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

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

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

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


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

§ Выставлены две задачи:
134 - автор pvv, сложность 3 балла. Старая задача под этим номер перекочевала на место 95-ой, которая давно уже вызывала нарекания неоднозначностью трактовки. Попытки как-то переформулировать задачу не увенчались успехом. Я принял решение снять эту задачу, тем более, что одна из трактовок позволяла решить эту задачу незначительной модификацией 94-ой, т.е. не добавляло ей дополнительной сложности.
Те, кто видел в этой задаче бесконечную рекурсию и потерял время в попытках найти общее решение в рамках SS2000, получили прирост рейтинга и положительные эмоции :-).
Возможно, со временем я выставлю эту задачу для свободного обсуждения теми, кто прошел 94-ю, но для этого нужно вносить изменения в алгоритмы движка, к чему я пока не готов.

146 - очередная задача от paparome (сложность 3 балла), которую я придерживал 2 года, чтобы добиться разнообразия авторов :-). Теперь на 8 задач третьего этапа имеется 5 авторов; вот время и пришло :-).

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

§ Fiolent подготовил отдельную проверочную базу для задачи 117.

§ Число сертифицированных на сайте специалистов неуклонно растет, поэтому естественным образом появилась идея публикации статистики, высказанная vlksm. В первом варианте публикуется распределение по возрастам и регионам.

§ Изменения среди лидеров:
Кроме автора paparome (15 место) никто даже не начинал решать 146 задачу. Видимо, авторитет сказывается. :-)
Roman S. Golubin решил 144 задачу (3 место).
MadVet - 140, 142 (19 место).
Arcan - 145 (2 место).
vlksm - 145 (4 место).

§ Новые лица в ТОР 100 и вернувшиеся туда:
ivan.korobov (128, 44.479)
Scorpion (125, 56.182)

§ Продвинулись в рейтинге:
raul (134, 17.823)
Артём С. (131, 7.665)
Shurgenz (129, 12.505)
antihero (127, 13.697

§ Продвижение ближайших претендентов на попадание в ТОР 100:
bloom (116, 14.079)
DarkTower (112, 290.550)

§ На этой неделе сертифицированы:
raul (B08005087) [AR] - г. Москва, Россия

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1 Печатнов В.В. (pvv) 145 134 21 354 95 18.817 5.979 25 22 Jan 2008 25 Jan 2008
2 Креславский О.М. (Arcan) 145 134 21 354 357 20.600 10.717 25 22 Jan 2008 25 Jan 2008
3 Голубин Р.С. (Roman S. Golubin) 144 144 21 351 889 84.015 58.822 25 24 Jan 2008 25 Jan 2008
4 Карасёва Н.В. (vlksm) 144 134 21 350 628 49.127 22.651 21 24 Jan 2008 25 Jan 2008
5 Белогурова К. (Katy_Ekb) 142 143 21 344 155 9.559 4.673 18 27 Oct 2007 11 Dec 2007
6 Любченко В.А. (IAS56) 142 145 21 343 497 253.551 95.835 17 14 Jan 2008 25 Jan 2008
7 Северюхин Ю.А. (Venser) 141 142 21 340 200 4.930 .655 14 19 Sep 2007 08 Jan 2008
8 Тарасов Д.Б. (Gavrila) 141 142 21 340 755 23.390 2.501 14 20 Sep 2007 25 Jan 2008
9 Солдатенков Ю.С. (SolYUtor) 141 142 21 340 490 17.852 2.695 14 20 Sep 2007 25 Jan 2008
10 Шептунов П.П. (Dzen) 141 142 21 340 279 8.130 3.499 14 02 Oct 2007 15 Nov 2007
11 Мурашкин И.В. (lepton) 141 142 21 340 544 15.737 5.539 14 18 Sep 2007 12 Jan 2008
12 Мальцев А.В. (Палкин) 141 142 21 340 422 48.788 7.690 14 13 Oct 2007 20 Jan 2008
13 Васьков Е.В. (Johan) 141 142 21 340 493 14.323 12.767 14 24 Nov 2007 30 Nov 2007
14 Бураков С.Г. (burakov58) 141 142 21 340 974 51.701 19.814 14 30 Sep 2007 09 Nov 2007
15 Войнов П.Е. (pаparome) 142 134 21 342 881 2.849 .049 13 22 Jan 2008 25 Jan 2008
16 Агапов В. (KERBEROS) 134 141 20 324 89 6.140 1.262 11 20 Nov 2006 27 Jul 2007
17 Кувалкин К.С. (Cyrilus) 140 141 21 337 1137 12.779 2.519 11 05 Jan 2008 25 Jan 2008
18 Зверев Д.Л. (dimzv) 137 141 21 332 1503 9.352 4.938 11 16 Dec 2007 16 Dec 2007
19 Держальцев В.А. (MadVet) 140 142 21 336 1010 35.854 4.270 10 21 Jan 2008 23 Jan 2008
20 Валуев Д.И. (Fiolent) 140 142 21 336 1547 121.139 66.360 10 29 Nov 2007 25 Jan 2008

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Лядов С.А. (Serg Alex Lad) 53 53 100 0 100 1510 25 Jan 2008
2 Makarovsky A. (mak) 47 47 86 3 89 1879 21 Jan 2008
3 >Зайцев А.А. (salex) 45 44 83 0 83 2106 25 Jan 2008
4 Zakaryan H. (Demnok) 41 41 76 0 76 2291 24 Jan 2008
5 Sevidova (~sellenka~) 36 36 68 2 70 1927 22 Jan 2008
6 Нагимов Т. (enzo) 26 59 50 19 69 904 24 Jan 2008
7 Borisenko S. (Serg****) 36 36 68 0 68 2686 24 Jan 2008
8 xxx (sleep) 28 41 64 0 64 2209 24 Jan 2008
9 Vorobyov P. (VorobyovP) 33 33 62 0 62 3025 24 Jan 2008
10 Новиков С. (felyeton) 30 30 55 0 55 3569 24 Jan 2008
113 >Игумнов В.П. (nothingness) 28 28 51 3 54 3664 25 Jan 2008
12 Шуленин А. (Leshik) 24 106 53 0 53 170 24 Jan 2008
13 Винокуров (Raydan) 29 29 53 0 53 3792 24 Jan 2008
14 Некрылов Д.А. (UncleFreddy) 29 29 53 0 53 3801 23 Jan 2008
15 Ян Л. (lusana) 28 28 51 0 51 3917 25 Jan 2008
16 >Шепелев С.Н. (k@ch) 19 37 47 3 50 2397 25 Jan 2008
17 Starygina (RSprog) 28 28 50 0 50 4041 23 Jan 2008
18 >Бобров С.В. (serg_nt) 28 28 50 0 50 4042 25 Jan 2008
19 >Овчинников А.Н. (007) 20 57 45 4 49 874 25 Jan 2008
20 Брусницын А.В. (if.nosferatu) 21 36 49 0 49 2784 21 Jan 2008
21 >Samchkuashvili (~Machvi~) 28 29 49 0 49 3594 25 Jan 2008
22 Мурылев В.Г. (Виктор М.) 28 28 49 0 49 4118 22 Jan 2008
23 Дужин В.С. (evil_eye) 14 53 26 22 48 1047 19 Jan 2008
24 >Гольцина (Natali_gol) 27 27 48 0 48 4214 25 Jan 2008
25 >- -.-. (Zmiy07) 26 26 45 0 45 4510 25 Jan 2008
26 Миронова Н. (N@t@li@) 19 30 36 8 44 3494 25 Jan 2008
27 Муськина (muzza) 25 25 43 1 44 4599 21 Jan 2008
28 >Щербаков А.А. (StUtk) 17 31 42 1 43 3253 25 Jan 2008
29 >Шугаев В.А. (shuga) 12 58 24 16 40 919 25 Jan 2008

Изучаем SQL

Перемещение таблицы в другую файловую группу в SQL 2005

decipherinfosys (оригинал: Moving table(s) to a different filegroup in SQL 2005 )
Перевод Моисеенко С.И.

В SQL Server 2005 в ALTER TABLE было добавлено новое предложение 'MOVE TO', позволяющее переместить таблицу в другую файловую группу. Предложение MOVE TO используется наряду с предложением DROP CONSTRAINT в синтаксисе команды ALTER TABLE. Когда удаляется ограничение первичного ключа или ограничение, которое создавало кластерный индекс, строки данных листового уровня кластерного индекса размещаются в некластеризованной таблице. В SQL Server 2005, когда удаляется кластерный индекс (путем удаления ограничения, которое создавало кластерный индекс), можно переместить таблицу в новую файловую группу или схему фрагментации в той же самой транзакции при использовании этой новой опции 'MOVE TO'. Давайте рассмотрим это на примере. В целях тестирования, мы создадим тестовую базу данных, пару файловых групп и таблицу, которую наполним некоторыми данными.

 

USE master
GO
CREATE DATABASE TEST
GO
ALTER DATABASE TEST ADD FILEGROUP TEST_DATA_1
GO
ALTER DATABASE TEST ADD FILEGROUP TEST_DATA_2
GO
ALTER DATABASE TEST
ADD FILE
( NAME = TEST1,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\TEST_1.ndf',
SIZE = 1MB,
MAXSIZE = 10MB,
FILEGROWTH = 1MB)
TO FILEGROUP TEST_DATA_1
GO
ALTER DATABASE TEST
ADD FILE
( NAME = TEST2,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\TEST_2.ndf',
SIZE = 1MB,
MAXSIZE = 10MB,
FILEGROWTH = 1MB)
TO FILEGROUP Test_DATA_2
GO
USE TEST
GO
CREATE TABLE TAB1
(
TAB1_ID INT IDENTITY(1,1),
TAB1_NAME VARCHAR(100),
CONSTRAINT PK_TAB1 PRIMARY KEY(TAB1_ID)
) ON TEST_DATA_1 -- Filegroup we created.
GO
INSERT INTO TAB1(TAB1_NAME)
SELECT Table_Name
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
GO

 

Выполнение системной хранимой процедуры sp_help для таблицы TAB1 покажет, что файловой группой для таблицы является TEST_DATA_1.

 

sp_help TAB1

 

Вот выборочный результат выполнения этой команды

 

Data_located_on_filegroup
-------------------------
TEST_DATA_1

index_name index_description
---- ------------------------
PK_TAB1 clustered, unique, primary key located on TEST_DATA_1

constraint_type constraint_name
-------------------------------
PRIMARY KEY (clustered) PK_TAB1

 

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

Чтобы переместить таблицу в другую файловую группу, мы должны использовать команду удаления ограничения наряду с опцией MOVE TO, как это показано ниже. Как только таблица перемещена в новую файловую группу, мы можем снова создать ограничение первичного ключа.

 

ALTER TABLE TAB1 DROP CONSTRAINT PK_TAB1 WITH (MOVE TO TEST_DATA_2)
GO
ALTER TABLE TAB1 ADD CONSTRAINT PK_TAB1 PRIMARY KEY(TAB1_ID)
GO

 

После выполнения вышеприведенной команды таблица TAB1 будет уже находиться в файловой группе TEST_DATA_2. Если вы еще раз выполните хранимую процедуру sp_help, она покажет изменение файловой группы для таблицы TAB1.

 

sp_help TAB1

 

 

Data_located_on_filegroup
-------------------------
TEST_DATA_2

 

Необходимо помнить следующие ограничения при использовании опции 'MOVE TO':
- MOVE TO не применима для индексных представлений или некластеризованных индексов.
- Схема фрагментации или файловая группа уже должна существовать.
- Если MOVE TO не указана, таблица будет размещаться в той же самой схеме фрагментации или файловой группе, которая была определена для кластерного индекса.

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

14-08-2007

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

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

§ Желающих поспособствовать популяризации сайта прошу проголосовать/поставить закладку в социальных сетях:
del.icio.us
dzone.com
Digg.com
Reddit.com
stumbleupon.com

Контакты

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

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

В избранное