![]() |
|
![]() ![]() ![]() |
|
petlyura |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 30.1.2008 Где: Харьков Репутация: 2 Всего: 2 |
Привет, Форумчане!
Есть таблицы неимоверных размеров. Из них я получаю запросом некоторые записи путем задания условий WHERE и IN. Но этих записей может вернуться сотня тысяч, а мне столько даром не надо, тем более запрос много времени занимает. Подскажите, как-то можно заставить Query возвращать не более определенного кол-ва записей, например, 1000? P/S. Таблицы Paradox7 |
|||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
Есть такой предикат в SQL TOP, приведу пример:
SELECT TOP 5 field1, field2,field3, ... FROM MyTable; Будет взято только пять записей из таблицы, в билдере не пробовал, но должно работать. -------------------- |
|||
|
||||
JayTi |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 22.5.2008 Репутация: нет Всего: нет |
Смотря какая СУБД, на фаербёрде есть такой указатель фёрст в запросе
это запрос выдаст первых 1000 записей а если
то вернёт последние 1000 записей если такой вариант не подходит, то делай в своём квери к примеру
Это сообщение отредактировал(а) JayTi - 13.6.2008, 07:03 |
||||||
|
|||||||
petlyura |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 30.1.2008 Где: Харьков Репутация: 2 Всего: 2 |
Dmi3ev, вот не работает у меня с TOP и с FIRST и с RECNO(). Не дружит Парадокс у меня с этими предикатами, функциями.
JayTi
Может, у кого были такие проблемы, и знаете решение, подскажите. |
|||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
попробуй:
-------------------- undefined |
|||
|
||||
petlyura |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 30.1.2008 Где: Харьков Репутация: 2 Всего: 2 |
Не выходит и с LIMIT. Может кто-то попробует у себя создать мини-проект с таблицей Paradox и запросом к нему с TOP, FIRST или LIMIT?
И если все работает, сообщите, пожалуйста. У меня постонно ругается Token not found и т.п. |
|||
|
||||
gather |
|
|||
![]() Rescue Officer ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 13.6.2007 Где: Russia, Lipetsk Репутация: нет Всего: 4 |
Вот так попробуйте. |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
если есть автоинкрементируемое поле int тогда можно так (пример, требует доработки).
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
gather |
|
|||
![]() Rescue Officer ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 13.6.2007 Где: Russia, Lipetsk Репутация: нет Всего: 4 |
jonie, не подойдет Ваш способ, ибо он будет выбирать постоянно ПЕРВЫЕ 1000 записей. А топикастеру необходимо ОГРАНИЧИТЬ количество записей в resultset.
Кстати вот ТУТ схожая проблема у народа. |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
gather я писал что пример требует доработки. однако ничего в нем не вижу такого, чтобы его не переделать... скажем подобное на T-SQL должно прокатить.
и вполне себе подойдет Это сообщение отредактировал(а) jonie - 15.6.2008, 22:27 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
petlyura |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 30.1.2008 Где: Харьков Репутация: 2 Всего: 2 |
И так не получилось. Никто не пробовал у себя создать маленький запрос на выборку с TOP, LIMIT или еще какой-нибудь хренью? У меня не выходит. Пользуюсь только BDE, табл. Paradox. Решил попытать счастье по-другому. Взял разбил запрос на несколько десятков запросов с помощью условия WHERE. А именно, допустим первоначально возвращалось 100.000 записей, теперь организован цикл, в ходе которого возвращается по несколько тысяч записей. И когда сумма возвращенных записей превысит 32К записей, то выйти из цикла. Но если сразу время выполнения запроса составляло несколько секунд, то сейчас - около 1,5 минут. Prepare() и индексы использую. Меня, может, и несколько секунд бы устроило, но это всего лишь тест, в реальности, объемы таблиц могут быть значительнее. Т.е. первый вариант может угнать во времени с геометрической прогрессией, второй - мне кажется, так и останется на уровне 1,5 минут. Но это много. Что делать? |
||||
|
|||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
||||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
Fazil6 ну а что парадокс не поддерживает подобное?) в плане подзапрос+автоинкримент.
и топ кстати, не даст то что я написал. всмотрись : тут постраничная выборка фактически может быть реализована. с топом так явно не прокатит (это не limit в мускуле).... например : надо выбрать 5-ую страницу, в страниц по 20 записей. попробуй топом...при условии, например, что ключ guid типа. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
petlyura |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 30.1.2008 Где: Харьков Репутация: 2 Всего: 2 |
Вот и ROW_NUMBER() не понимает. Project Project1.exe raised exception class EDBEngineError with message 'Invalid use of keyword. Token: ROW_NUMBER() Так же он пишет и о всех TOP, LIMIT, FIRST |
||||
|
|||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
открой хелп и почитай наконец про функции парадокса.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |