Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Вопрос-Ответ Новый топик    Ответить
 Получение строки по номеру в отсортированном списке  [new]
quiet
Guest
Получение строки по номеру в отсортированном списке

Создаю таблицу tblPat содержащее поля
nId -- числовое и cLastName -- текстовое
При этом по полю nId создан уникальный индекс

Заполняю эту таблицу большим объемом данных(порядка 200000-500000)

Выполняю запрос
select nId, cLastName from tblPat order by cLastName, nId
Задача -- быстро получить Id, 100000 ной по номеру строки.
Хотелось бы получить время порядка 1 секунды

Заранее спасибо!
4 июл 03, 17:26    [251938]     Ответить | Цитировать Сообщить модератору
 Re: Получение строки по номеру в отсортированном списке  [new]
NewYear
Member

Откуда: Большой адронный коллайдер
Сообщений: 2203
quiet,
отсортируй список в обратном порядке. при этом проси базу возвратить только count(*)-100000 строк (не знаю, что у тебя за база, но скорее всего это вожможно). первая возвращенная строка как раз и будет твоей.
4 июл 03, 17:55    [251974]     Ответить | Цитировать Сообщить модератору
 Re: Получение строки по номеру в отсортированном списке  [new]
NewYear
Member

Откуда: Большой адронный коллайдер
Сообщений: 2203
фу ты, извини. глюки в конце недели
4 июл 03, 18:04    [251984]     Ответить | Цитировать Сообщить модератору
 Re: Получение строки по номеру в отсортированном списке  [new]
NE_Dimon
Member

Откуда: Из нее, родимой...столицы
Сообщений: 580
Попробуй сделать селект в другую таблицу и считай Id для RecNo=100000
7 июл 03, 10:37    [252700]     Ответить | Цитировать Сообщить модератору
 Re: Получение строки по номеру в отсортированном списке  [new]
NE_Dimon
Member

Откуда: Из нее, родимой...столицы
Сообщений: 580
Создаю таблицу tblPat содержащее поля
nId -- числовое и cLastName -- текстовое
При этом по полю nId создан уникальный индекс

Заполняю эту таблицу большим объемом данных(порядка 200000-500000)

Выполняю запрос
select nId, cLastName from tblPat order by cLastName, nId
Задача -- быстро получить Id, 100000 ной по номеру строки.


ЗЫ. Как я понял, красный nId = зеленый Id.
ЗЗЫ. "Считай" = "получи"
7 июл 03, 10:43    [252710]     Ответить | Цитировать Сообщить модератору
 Re: Получение строки по номеру в отсортированном списке  [new]
quiet
Member

Откуда:
Сообщений: 14
Ne_Dimon, идея с select-ом в другую таблицу хорошая, но работает медленно
порядка 5-ти секунд сам запрос, а потом секунды 2 выборка нужной строки.
Вообще, нужно все это для навигации в Grid-е.
Типа пользователь прокрутил на 100000-ый номер а ему тут же надо все показать.
Замечание насчет Id и nId верно
7 июл 03, 11:46    [252843]     Ответить | Цитировать Сообщить модератору
 Re: Получение строки по номеру в отсортированном списке  [new]
NE_Dimon
Member

Откуда: Из нее, родимой...столицы
Сообщений: 580
Ну дык селект-то все равно делать. . А потом LOCATE FOR RECNO=100000.

По поводу навигации по гриду. А почему по номеру записи, а не по ИД или по фамилии ?
7 июл 03, 12:06    [252881]     Ответить | Цитировать Сообщить модератору
 Re: Получение строки по номеру в отсортированном списке  [new]
quiet
Member

Откуда:
Сообщений: 14
Вообще-то select на все делать необязательно.
Идея такая.
select count(*) from tblPat where ...
работает моментально
Такими запросами можно определять порядковый номер строки

Если бы удалось реализовать нечто типа поиска в отсортированном списке
при помощи таких функций то она работала бы где-то за
log 500000 ~= 20 опрераций что должно дать приемлемое время
Но очень хочеться переложить эту умную работу на сервер
а не на себя

И к тому же странна такая деятельность
7 июл 03, 13:35    [253074]     Ответить | Цитировать Сообщить модератору
 Re: Получение строки по номеру в отсортированном списке  [new]
quiet
Member

Откуда:
Сообщений: 14
Насчет Locate и навигации в Grid-е

Locate работает по произвоительности точно так же как Select top 100000

А Grid так у пользователя стандартное пожелание -- потащить Scroll Bar
И когда он притаскивает он притаскивает его на запись с таким-то номером
отсюда и задача
7 июл 03, 13:39    [253082]     Ответить | Цитировать Сообщить модератору
Все форумы / Вопрос-Ответ Ответить