Для SQL select, возвращающего более 1 значения, как они сортируются, когда Id равен GUID? - PullRequest
2 голосов
/ 27 апреля 2010

Мне интересно, как SQL Server упорядочивает данные, возвращаемые из запроса, и столбцы Id соответствующих таблиц имеют тип uniqueidentifier.

Я использую NHibernate GuidComb при создании всех GUID и выполняю такие действия, как:

Sheet sheet = sheetRepository.Get(_SheetGuid_); // has many lines items
IList<SheetLineItem> lineItems = sheet.LineItems;

Я просто пытаюсь понять, как они будут заказаны, когда я делаю что-то вроде:

foreach (SheetLineItem lineItem in lineItems)

Я не могу найти хорошую статью о том, как GUID сравниваются с SQL при заказе, , если так происходит .

Ответы [ 2 ]

6 голосов
/ 27 апреля 2010

GUID отсортированы таким образом по ORDER BY. Цитирую статью ...

  • 0..3 оцениваются в порядке слева направо и являются менее важными, чем
  • 4..5 оцениваются в порядке слева направо, затем
  • 6..7 оцениваются в порядке слева направо, затем
  • 8..9 оцениваются в порядке справа налево, затем
  • A..F оцениваются в порядке справа налево и являются наиболее важными
4 голосов
/ 27 апреля 2010

Если вы не включите предложение ORDER BY, SQL Server не гарантирует какой-либо порядок результатов.Может оказаться возможным последовательно возвращаться в некотором порядке (например, порядок кластеризованного индекса), но вы не можете быть уверены, что так будет всегда (например, если запрос разбивается и выполняется в нескольких потоках, когда результаты объединяются,порядок может быть разным при каждом выполнении, поскольку потоки могут завершаться в разных порядках.

Единственный способ получить конкретный порядок - использовать предложение ORDER BY.В NHibernate это может быть достигнуто путем указания order-by = "..." на ваших сумках (или эквивалентных) в файлах сопоставления.

См. Документацию NHibernate для получения дополнительной информации об "order-by": http://nhibernate.info/doc/nh/en/index.html

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