На ум приходит ряд вопросов:
- Обработка NULL - многим людям трудно понять, что NULL - это совсем другой зверь, чем "0" (ноль), и что вы НЕ МОЖЕТЕ сравнивать IF myCol = NULL - вам нужно использовать "IS NULL" или "IS" NOT NULL "и пр.
NULL имеет свое место - когда это действительно означает отсутствие выбора или значения - но во многих случаях вам, вероятно, лучше определить значение по умолчанию (в столбце INT, часто "0"), которое будет представлять "ничто" "или" выбор не сделан "и т. д.
- Индексирование - большая путаница вокруг индексации и ее плюсов и минусов, преимуществ и недостатков. Нет смысла индексировать каждый столбец - и даже если вы определили столбец, который будет часто использоваться в предложении SELECT ... WHERE, если селективность столбца не достаточно мала (некоторые эксперты говорят, что одно значение столбец не выделяет 1% или менее ваших данных, не занимайтесь индексацией), часто это не очень помогает, поскольку сканирование полной таблицы (сканирование индекса) обходится дешевле.
А также с индексированием - если вы используете функции T-SQL в своих предложениях WHERE, например «UPPER (myCol) = (value)» или «LEFT (myCol, 10) = (value)», то вы не будете см. также предполагаемую выгоду от индекса.
Индексирование может значительно повысить вашу производительность - но индексируйте с умом!