powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Часть запроса
5 сообщений из 5, страница 1 из 1
Часть запроса
    #32002965
Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

А не подскажут ли уважаемые отцы, как в SQL Server 7.0 получить в результирующем наборе часть строк? Например, я передаю хранимой процедуре одними из параметров - "вернуть строки с 20 по 30" (причем сначала ищутся все записи, удовлетворяющие другим критериям поиска)? Проблема в следующем - делаю базу с автопереводом слов на разные языки. Выборка двух с половиной тысяч записей занимает 3-4 секунды. Есть таблицы: "клиенты", "анкеты", "фразы", "имена клиентов". Для таблиц "клиенты", "анкеты" и "имена клиентов" уникальный OwnerID (ID клиента). В таблице "фразы" содержатся фразы, на которые ссылаются поля в таблице "анкеты". Структура таблицы "фразы":

PhrazeID - идентификатор
LangID - ID языка
Phraze - собственно фраза.

Так как таблица "анкеты" объемная, то даже при JOIN'е таблицы "фразы" запрос тормозит. Поэтому хотелось бы подставлять значения только в те строки результирующего набора, которые попадают в выбранный промежуток... Извините, если все запутано. Для примера кусок кода, перед которым собственно и надо установить обрабатываемый промежуток:

--далее вставляем фразы на запрошенном языке (цвет глаз, цвет волос, натура, имя клиента, название страны)
UPDATE #Results SET Eyecolor= cl.Phraze FROM #Results JOIN Phrases cl on cl.PhraseID=#Results.EyeID AND cl.LangID=@LangID
UPDATE #Results SET Haircolor= cl.Phraze FROM #Results JOIN Phrases cl on cl.PhraseID=#Results.HairID AND cl.LangID=@LangID
UPDATE #Results SET Nature= cl.Phraze FROM #Results JOIN Phrases cl on cl.PhraseID=#Results.YNat AND cl.LangID=@LangID
UPDATE #Results SET Zodiac= cl.Phraze FROM #Results JOIN Phrases cl on cl.PhraseID=#Results.Zod AND cl.LangID=@LangID

С удовольствием поделюсь с отцами показами RLE за неоценимую помощь...
...
Рейтинг: 0 / 0
Часть запроса
    #32002970
ArtP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У SQL Server есть только оператор TOP например

select TOP 10 * from table1 order by 1

возвращает первые 10 записей
Но не понятно зачем это в данном случае может быть тебе просто переписать UPDATE

UPDATE #Results SET Eyecolor= cl.Phraze FROM Phrases cl WHERE cl.PhraseID=#Results.EyeID AND cl.LangID=@LangID AND #Results.id>=10 AND #Results.id<=20

Если в #Results нет id, то проведи операцию в два этапа создав промежуточную таблицу с id
...
Рейтинг: 0 / 0
Часть запроса
    #32002993
Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем, уже разобрался... И работает все влет, и процедуте можно передавать параметры, с какой по какую строки обработать полностью, а какие игнорировать... И без SELECT TOP !
...
Рейтинг: 0 / 0
Часть запроса
    #32002996
Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы реализовали это так как ArtP предлагал?

Александр.
...
Рейтинг: 0 / 0
Часть запроса
    #32003022
Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вкратце о реализации: поскольку нужда в полностью заполненных полях - грубо говоря, текущая запрошенная страница их n записей (самая критичная по времени процедура в моем случае) лежит в узком диапазоне, делаем следующее: Выбираем все нужные записи, удовлетворяющие условиям отбора, из таблиц (это быстро, поскольку в таблице "Анкеты" только числовые индексы-ссылки на фразы из таблицы "Фразы"). Далее нумеруем все записи таблицы от 1 до "кол-во записей" (для этого завел отдельное поле). А уже потом выбранный промежуток обрабатываем полностью (вставляем фразы на нужном языке и пр). В итоге получился выигрыш в скорости исполнения порядка 4-5 раз визуально... Диапазон обрабатываемых записей передается в процедуру в качестве параметров, что очень удобно - в ASP-скрипте поменяли константу количества записей на странице и все! Остальное не наша проблема...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Часть запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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