powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / А как такое сделать? И вообще, возможно ли? (экспертам)
11 сообщений из 11, страница 1 из 1
А как такое сделать? И вообще, возможно ли? (экспертам)
    #32068023
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть вопроса:
Когда делаем запрос, ну типа
SELECT <somthing> FROM T1 WHERE F=@VAR
А таблица офигительно большая, то в результате на серваке строится результирующая таблица, и если записей ~1000000 то процесс может затянуться,
вопрос:
Как написать запрос так, чтобы возвращалость ток первые ,...ну 50 записей, а вся результирующая таблица не строилась?
В DB2, например есть такая конструкция -
OPTIMIZE FOR N ROWS..
а как в T-SQL выходят из такого положения?
...
Рейтинг: 0 / 0
А как такое сделать? И вообще, возможно ли? (экспертам)
    #32068026
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select top 50 ...
...
Рейтинг: 0 / 0
А как такое сделать? И вообще, возможно ли? (экспертам)
    #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
А как такое сделать? И вообще, возможно ли? (экспертам)
    #32068031
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/15625
...
Рейтинг: 0 / 0
А как такое сделать? И вообще, возможно ли? (экспертам)
    #32068069
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А оператора LIMIT в MSSQL нету?
Например в MySQL с 50 по 100 запись выглядит так:

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

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

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


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


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