Сегодня 15 мая, среда ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7273
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
coding4.net
coding4.net
Голосов: 1
Адрес блога: http://www.coding4.net/
Добавлен: 2012-06-11 20:16:46
 

Вопросы на собеседовании по SQL (кое-где с некими ответами)

2013-05-05 19:19:00 (читать в оригинале)

TSQL
Продолжаю размещать переводы с англоязычного сайта www.techinterviews.com, посвященного вопросам на собеседовании для программистов. Точная ссылка вот вот . Ответы в основном переведены с сайта. В общем, ответы, как всегда, так себе...

Какие два метода используются для получения в SQL ?
На techinterviews.com ответа не было ответа, но по одним слухам это запрос select и cursor-ы, по другим хранимые процедуры и select. Первый вариант вероятнее.

Какой тип курсора вы используете для получения множества записей ?
...
Какая разница между "where" и "having" выражениями ?
- "Where" это ограничительное выражение. Вы используете его чтобы ограничить вывод всех данных из БД. "Where" выражение используется перед получением результата. Выражение "having" это один из видов фильтрующей команды.

Какая базовая форма SQL выражения чтения данных из таблицы ?
- Базовая форма чтения данных это ‘SELECT * FROM table_name; ‘. Ответ ‘SELECT * FROM table_name WHERE xyz= ‘whatever’;’ не является базовой формой, потому что есть выражение "where".

Какие структуры БД вы должны реализовать для ускорения операций чтения из таблиц ?
- В соответствии с правилами настройки БД мы должны: 1) правильно использовать индексы 2) правильно разместить объекты БД по разным tablespace, файлам и т.п. 3) создание специального пространства (tablespace) для локализации данных специальных типов (например, CLOB, LOB)

Каковы компромисы использования индексов ?
- 1. Быстрые выборки, медленные обновления. 2. Дополнительное место для хранения индексов. Обновления медленнее, потому что обновляя данные в таблице в ыдолжны также обновлять данные индекса.

Что такое "join" ?
- ‘join’ используется для логгического объекдинения 2-х или более таблиц с или без общими полями.

Что такое нормолизация и денормолизация ? Зачем используется денормолизация ?
- Нормолизация данных значит удаление избыточной информации из таблицы, и организация данных так, чтобы будущие изменения таблиц были простыми. Денормализация значит разрешение избыточности в данных. Главнай польза от денормолизации это увеличение производительности, а также упрощение получения и обработки данных. Этого добиваются уменьшением количества join-ов необходимых для обработки данных.

Что такое ограничение "constraint" ?
- Ограничение позволяет применять простые проверки ссылочной целостности на таблицах. Есть 4 основных типа ограничений, поддерживаемых на данный момент SQL Server-ом: PRIMARY/UNIQUE - обеспечивают уникальность конкретной колонки таблицы. DEFAULT - определяют значения по умолчанию для колонки (если, например, значение не было заданно при insert-е). FOREIGN KEY - проверка для каждого из значений в колонке наличия такого же значения в заданной колонке другой заданной таблицы. CHECK - проверяет каждое значение помещаемое в колонку, соответствует ли оно определенным правилам (например, значению из списка). Каждый тип ограничения выполняет специальный тип действия. NOT NULL еще один тип ограничения, проверяет чтобы в колонку не поместили значение NULL.

Какой тип индексированных данных вы можете иметь ?
- Тмп индекса влияет на поиск данных для выемки. Разные данные удобно искать по разным индекасам. Три наиболее общих типа такие: B-Tree (генерализованные деревья бинарного поиска), bitmap - битовые карты (содержат строки битов, каждое значение соответствует биту в строке битов индекса, поиск быстрый, но требуется небольшое количество возможных значений данных), - Хэш коды (упаковывают длинные данные в короткие коды, которые гораздо быстрее сравнивать, минус в долгом изначальном строительстве хэша при создании индекса).

Что такое первичный ключ ?
- PRIMARY INDEX/PRIMARY KEY это то что пришло из теории БД. Его поведение такое же как у UNIQUE INDEX, то есть в таких колонках не должны встречаться повторяющиеся значения в разных строках. Значения в колонках уникальны. Все колонки помеченные как первичный ключ должны быть помеченны как NOT NULL. Кроме того первичный ключ в SQL Server значит, то как сами данные таблицы отсортированны и хранятся (в гранулированных красно черных деревьях). Именно по колонке первичного ключа должно происходить наибольшое число выборок данных, тогда производительность максимальна

Что такое "функциональная зависимость" ? Как она влияет на дизайн таблиц БД ?
- Функциональная зависимость относится к тому, как один объект БД зависит от другого в БД. Например, процедура sp2 может вызывать процедуру sp1. Таким образом sp2 функционально зависит от sp1.

Что такое тригер ?
Тригеры это специальный вид хранимых процедур, которые созданны для поддержания целостности данных в БД. Тригер срабатывает каждый раз когда операция модификации данных производится (insert, update, delete). Тригеры срабатываю автоматически. Они могут вызываться рекурсивно и взаимно рекурсивно. Тригеры ассоциируются с конкретной таблицей. The types of statements are insert,update,delete and query statements. Basically, trigger is a set of SQL statements A trigger is a solution to the restrictions of a constraint. For instance: 1.A database column cannot carry PSEUDO columns as criteria where a trigger can. 2. A database constraint cannot refer old and new values for a row where a trigger can.

Почему выражения "group by" или "order by" дорогие для выполнения (снижают производительность) ?
- Выполнение "group by" или "order by" требует создания временных таблиц для промежуточных результатов запросов. А это в зависимости от результирующего набора данных может быть очень дорогим (долгим).

Что такое покарытие индексов (index covering) запроса ?
- Это значит, что данные могут быть найдены только посредством индексов, без использования собственно таблиц

Какие типы объединений (join algorithms) вы знаете ?
См. Памятка по JOIN-ам в SQL

Тэги: tsql, вопрос, собеседование

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по количеству голосов (152) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.