
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.05.2004, 17:45
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
Доброго времени суток! Задача такая: выбрать из БД записи с 100-й по 120-ю. SELECT TOP 20 * FROM [ table ] WHERE Id_records NOT IN (SELECT TOP 100 Id_Records FROM [ table ] ORDER BY ID_records) ORDER BY ID_records. НО, из-за отсутствия внутренней оптимизации запросов в Access'e - тормозит (если в таблице 5000 записей, думает около минуты). Если убрать TOP во вложенном запросе - работает быстро. Вопрос: Как пропустить n-е число записей в Access, чтобы это работало быстро. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 17:47
|
|||
|---|---|---|---|
|
|||
Постраничный вывод в Access. |
|||
|
#18+
У меня глупый вопрос: а это поле проиндексировано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 17:47
|
|||
|---|---|---|---|
|
|||
Постраничный вывод в Access. |
|||
|
#18+
(Кстати, это будут записи не с 100-й, а со 101-й...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 17:48
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
такой задачи авторЗадача такая: выбрать из БД записи с 100-й по 120-ю. БЫТЬ НЕ МОЖЕТ МОЖЕТ БЫТЬ Такая задача: Выбрать из БД записи, у которых значение поля ID находится внутри отрезка 100-120 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 17:50
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
И решается она так - Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 17:51
|
|||
|---|---|---|---|
|
|||
Постраничный вывод в Access. |
|||
|
#18+
2 Victosha: Хоть такой задачи быть и не может, но приведенный в вопросе селект работает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 17:52
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
2 Виктоша Такая задача не только может быть, но и реально используется Для примера этот сайт :) и по ссылке тебя http://www.sql.ru/faq/faq_topic.aspx?fid=105 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 17:54
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
Спасибо. Да, вы правы. Выводить записи нужно со 101-й. Но это не существенно. Поле проиндексировано. Такая задача нужна для реализации пейджингового механизма. С возможностью сортировки данных по произвольному полю. В этой связи хочу отметить: мне нужно выводить данные именно со 101-й записи по счету, а не со 102-м ID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 17:56
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
2 Саныч Саныч - это ,была просто шутка? Или мне нужно ответить по существу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 17:56
|
|||
|---|---|---|---|
|
|||
Постраничный вывод в Access. |
|||
|
#18+
По ссылке paparome приведен вариант с временной таблицей... Похоже, что ничего более красивого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 17:57
|
|||
|---|---|---|---|
|
|||
Постраничный вывод в Access. |
|||
|
#18+
2 Victosha: Если у тебя шутка, то и у меня шутка. Else соответственно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 17:59
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
Тормозит NOT IN - он вообще тормозной как вариант (все равно идет сортировка) 1. Вычисляешь максимальный из первых 100 2. в условии вместо "NOT IN" пишешь "> п.1" Осталась маленькая проблема, как это реализовать :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:02
|
|||
|---|---|---|---|
|
|||
Постраничный вывод в Access. |
|||
|
#18+
Да, точно. Как-то так: SELECT TOP 20 * FROM [ table ] WHERE Id_records > select max(SELECT TOP 100 Id_Records FROM [ table ] ORDER BY ID_records) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:02
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
Господа! Приведенный мною запрос хорошо работает в MS SQL, но очень тормозит в Access'e. Собственно предложенное вами решение (http://www.sql.ru/faq/faq_topic.aspx?fid=105) полностью аналогично моему. Решения с использованием временных таблиц мне не подходят - Access же все таки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:03
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
О еще идейка - но надо проверять Что если конструкцию NOT IN заменить на left join, а во where проверять на Null Что-то типа: Код: plaintext 1. 2. 3. 4. 1. А вдруг быстрее будет? 2. в MSSQL такое прокатит, а вот прокатит ли в Аксе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:05
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
2 goodw Это мы заметили, ссылку для Вика бросил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:05
|
|||
|---|---|---|---|
|
|||
Постраничный вывод в Access. |
|||
|
#18+
Стоп! Этот селект ведь строится динамически? Числа 20 и 100 ведь в него подставляются? Тогда можно запускать два селекта: SELECT TOP 100 Id_Records FROM [ table ] ORDER BY ID_records -> получили A=max -> SELECT TOP 20 * FROM [ table ] WHERE Id_records > A где выделенное красным вычисляется и подставляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:06
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
Саныч рулит :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:06
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
2 paparome про ссылку на меня не понял, а по ссылке, в разделе "классика" Glory меня сильно удивил. придется проверить кое-где. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:09
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
авторпро ссылку на меня не понял, Забей авторв разделе "классика" Glory меня сильно удивил. придется проверить кое-где. Что для Glory "классика", того мы можем и не знать Сразу поправлюсь: того я могу и не знать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:20
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
2 Саныч: энергоемкий способ. "SELECT TOP 100 Id_Records FROM [ table ] ORDER BY ID_records -> получили A=max ->" Перебирать весь рекордсет - не пойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:27
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
2 paparome про ссылку понял - послали - оценил -) 2 All надо же и так серьёзно все это обсуждается.... 2 Саныч у меня не шутка. в общем ввели меня в замешательство. По энтузиазму обсуждения, поморщив репу, пришел для себя к такому выводу: Раз люди находят для себя этом какую-то ценность - ну и хорошо. Главное, чтобы было хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:39
|
|||
|---|---|---|---|
|
|||
Постраничный вывод в Access. |
|||
|
#18+
2 goodw: Этот способ всяко не более энергоемкий, чем исходный. Потому что селект с TOP 100 запускается один раз, а не сравнивается поэлементно с внешним селектом, как в исходном случае. А перебирать весь рекордсет не нужно. Он ведь рассортирован. MoveLast - и готово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:49
|
|||
|---|---|---|---|
|
|||
Постраничный вывод в Access. |
|||
|
#18+
2 Victosha: А чем этот вопрос хуже других? На этом форуме постоянно просят помочь написать запрос, переделать запрос, оптимизировать запрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2004, 18:50
|
|||
|---|---|---|---|
Постраничный вывод в Access. |
|||
|
#18+
Glory прав в классике - дошло до меня - что-то я последние дни совсем плох. 2 Саныч (Задрав портки бегом присоединяюсь - уж больно веселый пэйджинг получается - как не поучаствовать....) А moveLAst и не нужен вовсе, нужно просто ORDER BY трам-пам DESC сказать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=45&mobile=1&tid=1674443]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
175ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 487ms |

| 0 / 0 |
