Вы не можете создать индекс на просто части даты. Существует ли причина, к которой Вы имеете?
, Даже если бы Вы могли бы создать индекс на просто части даты, оптимизатор, вероятно, все еще не использовал бы ее для вышеупомянутого запроса.
я думаю, что Вы найдете, что
SELECT * FROM transactionlist WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-18'
эффективно и делает то, что Вы хотите.
Вот почему DataSets и DataTables:
Хорошо для быстрого создания приложения, использующего простой доступ к данным (как вы упомянули).
Не подходит для хорошо спроектированного корпоративного приложения - слишком много упрощений и обобщений.
Я обнаружил, что использование правильной объектной модели с привязкой к данным почти всегда превосходит использование DataSets и DataTables , и они могут иметь все (и даже больше!) функциональность, простоту использования и скорость использования DataSets и DataTables.
И вы не столкнетесь с такими проблемами, потому что ваша бизнес-модель не тесно связана в структуру вашей базы данных.
Мне еще предстоит встретить кого-нибудь, кто использовал бы такой фреймворк, как CSLA.
5. (или, может быть, 4b)
Используйте структуру, которая предоставляет вам функциональность NULL в вашем классе доступа к данным. Вышеупомянутая структура CSLA.NET (от Riko) использует класс SafeDataReader, который работает точно так же, как DataReader, но может преобразовывать все NULL в пустые значения для уровней доступа к данным и бизнес-логики.