Лучший способ справиться с датой заказа для достижения лучшей производительности? - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть большие таблицы, содержит столбцы DateTime для хранения точного времени некоторых событий и действий в моем приложении.В некоторых случаях пользователи могут вводить дату события.

Я хочу проверить последовательности событий, найти события по времени события и тому подобное.

Если я упорядочиваю события по DateTimeЭто занимает много времени в больших данных.Если я заказываю по идентификатору, нет гарантии, что ввод данных пользователей упорядочен, также пользователи не несут ответственности за определение последовательности (они просто вводят дату и время).Я предпочитаю заказывать по числовому полю вместо DateTime.

Что вы предлагаете?

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

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

Лично я бы сделал заказ непосредственно на DateTime (с индексом в БД), но убедитесь, что ваши запросы LINQ ограничивают результаты соответствующим окном даты.

1 голос
/ 07 февраля 2012

Имейте в виду, что дата и время будут храниться как целое число тиков, начиная с фиксированного момента времени (обычно 1 января 1970 года).Для сравнения даты и времени это просто целочисленное сравнение этого единственного значения, ему не нужно сравнивать год, месяц, день и т. Д. Это происходит, если вы не сохраняете дату как строку, а не как дату и время.

Я предполагаю, что ваша база данных хранит данные, отсортированные по идентификатору, и идентификатор также индексируется, поэтому так быстро.Ваша проблема не в сортировке по времени данных, а в сортировке по столбцу без идентификатора.Как и предполагал Рид, вам, вероятно, просто нужно проиндексировать столбец.Также возможно, что вы делаете что-то где-то так, как не должны.Трудно сказать, что это может быть, не видя код, конфигурацию БД и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...