Я бы сказал, что есть два типа вещей, которые нужно знать в отношении SQL (на самом деле это верно для многих технологий), есть конкретные технические вещи, такие как объединения, подзапросы, объединения и т. Д., Которые вы понимаете или не понимаете, а затем есть вещи как дизайн базы данных и моделирование данных, в котором есть градиент навыков, как искусство. Со временем эти вещи становятся лучше, но вы никогда их не «знаете», потому что с ними «они так не работают».
Тем не менее, вот общий план, с которым я бы пошел, и я абсолютно открыт для комментариев / мыслей других, где я могу ошибаться.
начинающий
- Где пункты (между, и т. Д.)
- Обновить синтаксис
- Внутреннее и левое против правого объединения понимание и использование
- Синтаксис для изменения и создания структур
- Временные таблицы и их использование
- курсоры
- Основная идея для чего нужны индексы, но не как они работают
- Понимание того, для чего нужны внешние ключи и как их обойти (каскадное удаление и т. Д.)
- Понимает основы транзакций
- Понимает ограничения
промежуточный
- Как работают индексы, разница между кластеризованными, некластеризованными и т. Д., Что такое страница и как они размещаются
- Понимание подзапросов и умение использовать их в соединениях
- Повороты
- Может придумать, когда уместно присоединиться к столу.
- Может генерировать сложные отчеты данных через группы с агрегатными функциями
- Может выполнять базовое профилирование только в режиме мониторинга / отладки, например, при чтении журнала
- Понимает разницу между OLAP и OLTP и когда / где использовать структуры OLAP
- Умеет использовать триггеры и не использовать их
- Понимает транзакции и может наслоить их на обработку ошибок в стеке
продвинутый
- Может прочитать план выполнения и понять, как различные части запроса влияют на него
- Может настраивать запросы с подсказками выполнения без снижения производительности (подсказки параллелизма, подсказки индекса, подсказки цикла и т. Д.)
- Может профилировать и использовать трассировки для идентификации и понимания статистики выполнения под реальной нагрузкой
- Знает, что структуры данных на диске
- Можно использовать счетчики производительности и понять, какова нагрузка на базу данных и как ее контролировать.
- Умеет проектировать куб OLAP и выполнять расширенный интеллектуальный анализ данных с одним
- Знает, как использовать триггеры и как использовать их безопасно, с минимальным риском
- Умеет использовать распределенные транзакции даже со слоями
Это все, что я мог придумать с моей головы. Пожалуйста, оставьте комментарии с упоминанием других, которые я пропустил, или если я поставил что-то не туда Я не достаточно продвинут, чтобы знать огромный список продвинутых техник, чтобы бросить хе