Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / А как такое сделать? И вообще, возможно ли? (экспертам) / 11 сообщений из 11, страница 1 из 1
14.11.2002, 16:23:20
    #32068023
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как такое сделать? И вообще, возможно ли? (экспертам)
Суть вопроса:
Когда делаем запрос, ну типа
SELECT <somthing> FROM T1 WHERE F=@VAR
А таблица офигительно большая, то в результате на серваке строится результирующая таблица, и если записей ~1000000 то процесс может затянуться,
вопрос:
Как написать запрос так, чтобы возвращалость ток первые ,...ну 50 записей, а вся результирующая таблица не строилась?
В DB2, например есть такая конструкция -
OPTIMIZE FOR N ROWS..
а как в T-SQL выходят из такого положения?
...
Рейтинг: 0 / 0
14.11.2002, 16:30:58
    #32068026
snake
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как такое сделать? И вообще, возможно ли? (экспертам)
select top 50 ...
...
Рейтинг: 0 / 0
14.11.2002, 16:32:58
    #32068030
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как такое сделать? И вообще, возможно ли? (экспертам)
вот пример
Код: plaintext
1.
2.
select top  50  * 
from table

ну а если Вам нужно выбрать с 50 по 100, то на таблице ~1000000 это уже будет тяжелее, т.к. запрос изменится
Код: plaintext
1.
2.
3.
select top  50  * 
from (select top  100  * from table) as table1
order by ... desc

так что, как мне кажется, лучше подумать зачем вообще выборка ~1000000 записей, может ограничение какое поставить... и отбирать по where
...
Рейтинг: 0 / 0
14.11.2002, 16:34:27
    #32068031
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как такое сделать? И вообще, возможно ли? (экспертам)
/topic/15625
...
Рейтинг: 0 / 0
14.11.2002, 17:49:46
    #32068069
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как такое сделать? И вообще, возможно ли? (экспертам)
А оператора LIMIT в MSSQL нету?
Например в MySQL с 50 по 100 запись выглядит так:

SELECT * FROM T1 LIMIT 50, 50
...
Рейтинг: 0 / 0
14.11.2002, 17:52:13
    #32068073
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как такое сделать? И вообще, возможно ли? (экспертам)
нет, и строго говоря по теории и не должно быть.
...
Рейтинг: 0 / 0
14.11.2002, 17:52:40
    #32068075
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как такое сделать? И вообще, возможно ли? (экспертам)
можно так:

select * from table option (fast 50)
...
Рейтинг: 0 / 0
14.11.2002, 19:07:06
    #32068109
Strannik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как такое сделать? И вообще, возможно ли? (экспертам)
SET ROWCOUNT 50

Select * from T1
...
Рейтинг: 0 / 0
14.11.2002, 19:52:26
    #32068119
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как такое сделать? И вообще, возможно ли? (экспертам)
если по сабжу то ответ VVG_ единсвенно правильный...
...
Рейтинг: 0 / 0
15.11.2002, 09:50:02
    #32068190
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как такое сделать? И вообще, возможно ли? (экспертам)
fima
нет, и строго говоря по теории и не должно быть.


И почему?! :)
...
Рейтинг: 0 / 0
15.11.2002, 11:05:05
    #32068221
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как такое сделать? И вообще, возможно ли? (экспертам)
2 mahoune...
потому что нет гарантии в неизменности таблиц.....
все таки многопользовательская система....
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / А как такое сделать? И вообще, возможно ли? (экспертам) / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]