Упорядочение результатов запроса из временной таблицы - PullRequest
1 голос
/ 15 января 2009

У меня есть SQL-запрос, по которому я собираюсь передавать достаточное количество данных ответа по сети, но я хочу как можно быстрее получить общее количество строк, чтобы облегчить связывание в пользовательском интерфейсе. По сути, мне нужно получить снимок всех строк, соответствующих определенным критериям, и затем иметь возможность пролистывать все полученные строки.

Вот что у меня сейчас есть:

SELECT --primary key column
INTO #tempTable 
FROM --some table 
--some filter clause
ORDER BY --primary key column

SELECT @@ROWCOUNT

SELECT --the primary key column and some others
FROM #tempTable
JOIN -- some table

DROP TABLE #tempTable

Время от времени результаты запроса оказываются не в порядке (предположительно потому, что я делаю неупорядоченный выбор из временной таблицы).

На мой взгляд, у меня есть несколько вариантов:

  1. Добавление второго порядка по предложению к выбору из временной таблицы.
  2. Переместите предложение по предложению ко второму выбору, и пусть первый выбор будет неупорядоченным.
  3. Создайте временную таблицу со столбцом первичного ключа, чтобы принудительно упорядочить временную таблицу.

Каков наилучший способ сделать это?

Ответы [ 3 ]

2 голосов
/ 15 января 2009

Используйте номер 2. Тот факт, что у вас есть первичный ключ в таблице, не означает, что результирующий набор из оператора select будет упорядочен (даже если на самом деле вы видите).

Нет необходимости упорядочивать данные при помещении их в временную таблицу, так что уберите их. Вы получите одинаковое значение @@ ROWCOUNT в любом случае.

Так сделайте это:

SELECT --primary key column
INTO #tempTable 
FROM --some table 
--some filter clause


SELECT @@ROWCOUNT

SELECT --the primary key column and some others
FROM #tempTable
JOIN -- some table
ORDER BY --primary key column

DROP TABLE #tempTable
1 голос
/ 15 января 2009

Переместить порядок с первого выбора на второй выбор.

База данных не является электронной таблицей. Вы не помещаете данные в таблицу в определенном порядке .

Просто убедитесь, что вы заказали его правильно, когда вытащите его обратно.

0 голосов
/ 15 января 2009

Лично я бы выбрал данные в том порядке, в котором вы хотите их получить. Так что при первом выборе, ваш заказ по. Таким образом, он может использовать любые существующие индексы и пути доступа.

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