Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
Добрый день! У меня такой вопрос: есть таблица с полями id_name name -------- ------- 1 Вася 2 Лена 6 Костя 8 Василиса 9 Володя 10 Света 12 Денис 13 Тоня 14 Костя всего 9 записей Как в DB2 составить запрос на выборку, например, с 3-ей по 7-ую записи? В mysql аналог limit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 13:00 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
Если говорить о том, что с третьей - то, такое не предусмотрено. А ограничить выборку N записей: Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 13:06 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
tomassoДобрый день! У меня такой вопрос: есть таблица с полями id_name name -------- ------- 1 Вася 2 Лена 6 Костя 8 Василиса 9 Володя 10 Света 12 Денис 13 Тоня 14 Костя всего 9 записей Как в DB2 составить запрос на выборку, например, с 3-ей по 7-ую записи? В mysql аналог limit Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 13:09 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо!!! Выручили! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 13:18 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
gardenmanЕсли говорить о том, что с третьей - то, такое не предусмотрено. Предусмотрено, еще как предусмотренно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 15:20 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
Herr Developer gardenmanЕсли говорить о том, что с третьей - то, такое не предусмотрено. Предусмотрено, еще как предусмотренно... Нука-нука... )) Покажи...)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 15:40 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
gardenman Herr Developer gardenmanЕсли говорить о том, что с третьей - то, такое не предусмотрено. Предусмотрено, еще как предусмотренно... Нука-нука... )) Покажи...)) Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 16:05 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
А тем, что сначала полною выборку построит, потом- пронумерует, профильтрует и тока тотом ответ даст. Во как!... Решение, но не производительное. Фигня короче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 16:33 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
gardenmanА тем, что сначала полною выборку построит, потом- пронумерует, профильтрует и тока тотом ответ даст. Во как!... Решение, но не производительное. Фигня короче. Так работает же "фигня такая" Тем более "тут" мигрируют с MySQL Самой простой способ сделать ограниченный и кустамизированный по сорту листинг! И уж на много "дешевле", чем вытаскавать все на клиента и там "колбасить" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 17:00 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
Ну, если уж на то пошло, то есть замечательная функция keep, которая позволяет пронумеровать записи без привлечения аналитических функций: дивися: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 18:07 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
gardenmanНу, если уж на то пошло, то есть замечательная функция keep, которая позволяет пронумеровать записи без привлечения аналитических функций: А где эта замечательная функция KEEP есть то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 18:33 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
gardenmanА тем, что сначала полною выборку построит, потом- пронумерует, профильтрует и тока тотом ответ даст. Во как!... Решение, но не производительное. Фигня короче.Хех, а как ты хотел, однако??? Вот предположим, есть у тебя выборка. Пусть в ней будет 1000000 строк. Пусть ты хочешь показать строки с 999990 по 1000000 (это очень стандартная ситуация, к примеру, постраничный просморт данных на веб-сайте). Тут ты хоть матушку-репку пой, но тебе-таки придется выдернуть все 1000000 записей, чтобы добраться до 10 последних. Как вариант, можно скомбинировать fetch first N rows only с аналитической функцией. Кроме того, если сортировка не нужна, то можно аналитическую функцию указать без кляузы ORDER BY (то есть написать row_number() over() ). Всё это позволит немного улучшить картину, но только в тех случаях, когда мы будем выбирать небольшое число строк от начала результирующего датасета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 05:22 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
2Владимир Конев ...row_number() over(order by id_name) Наличие индекса по id_name тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 05:39 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
golsa2Владимир Конев ...row_number() over(order by id_name) Наличие индекса по id_name тожеЕсли честно, то я не понял, что ты ЭТИМ хотел сказать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 08:33 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
Herr Developer gardenmanНу, если уж на то пошло, то есть замечательная функция keep, которая позволяет пронумеровать записи без привлечения аналитических функций: А где эта замечательная функция KEEP есть то? Эта волшебная функция есть у меня Позволяет сохранить значение поля для выражений в следующей строке. Т.е. позволяет очень очень быстро выполнять некоторые аналитические функции без всяких сортировок (типа расчета остатков нарастающим итогом) Особенно если идет по индексу - вообще веселуха. Я б даже для IBM сделал suggestion чтоб они эту фичу в стандартную возможность DB2 записали. кстати на эту идею меня TORT натолкнул еще год назад. Может исходники выложить? Они ооочень короткие и оооочень простые. Хочешь? автор Хех, а как ты хотел, однако??? Однако не надо мне объяснять прописные истины. Я лишь хочу подчеркнуть тот факт, что все в итоге зависит от проектирования. И такие запросы как - дать 10 записей из выборки начиная с 100-й - яркий пример как впустую транжирить ресурсы сервера. Я в своей базе никогда не допущу подобного. В противовес - дать 10 записей начиная со значения ключа - совсем другое дело. Тут накладные расходы сервера - минимальны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 11:08 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
Как вариант: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 11:20 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
2 Alexey Popov Прикольно. )) Сначала прошагать нужное количество записей, а потом выбрать столько сколько нужно. Только >3 надо параметризовать. А так действительно - все верно. Вариант почти рабочий. Но опять же - накладных расходов много будет если "пропустить записей нужно будет много. Дело в том, что запрос Q1 пойдет по индексу - это еще не факт. Так что нужно подправить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 11:37 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
2 gardenman Понимаю, что будет фетч всех записей от первой до стартовой (третьей) ради её нахождения. И будет странно, если не по индексу. Отличие от варианта с ROW_NUMBER в том, что предикаты по ключевому полю должны сработать быстрее. IMHO. Если это простой листинг данных порциями, то разумнее запоминать последний ID_NAME с последуйщим запросом новой порции данных. Как в твоём первом ответе. Но в вопросе это не видно (мне). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 12:07 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
gardenman Я б даже для IBM сделал suggestion чтоб они эту фичу в стандартную возможность DB2 записали. кстати на эту идею меня TORT натолкнул еще год назад. Начнеться public beta Viper'a тогда надо делать suggestion IBMу gardenman Может исходники выложить? Они ооочень короткие и оооочень простые. Хочешь? Сейчас думаю, где бы это могло пригодиться... Во, например, можно легко график баланса сделать, как денюжки клиентов притикали/отнекали во времени Выкладывай сюда! Или лучше сделать ветку типа "KEEP - bla-bla-bla function" Чтоб, если что, народ мог свои wishes писать и благодарности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 12:48 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
Вот задался вопросом - надо сделать пэйджинг таблицы. Всё бы хорошо, да id не инкрементируется, т.е. не 1,2,3... 99,100, а рандомные. Записей много - миллион, т.е. считывать весь миллион записей и выдавать, скажем, 100, пользователю - не рационально. Как здесь быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 19:17 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
olegrolikВот задался вопросом - надо сделать пэйджинг таблицы. Всё бы хорошо, да id не инкрементируется, т.е. не 1,2,3... 99,100, а рандомные. Записей много - миллион, т.е. считывать весь миллион записей и выдавать, скажем, 100, пользователю - не рационально. Как здесь быть?Как часто записи в таблице удаляются или вставляются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 10:03 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, спасибо за ответ. Нашёл вариант вот такой: SELECT * FROM ( SELECT id, name, rownumber() OVER () AS ROW_NEXT FROM hockey ) as product_temp WHERE ROW_NEXT BETWEEN 0 and 100 У меня будет веб-приложение (страничка-jsp) а там легко сохранять 0 и 100, потом изменять эти значения на 101 и 200, и так далее... Хотелось бы услышать ваш вариант. Записи будут добавляться постоянно. Это тестовое приложение для изменения записей в таблице, но возможно практическое применение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 11:17 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
olegrolikMark Barinstein, спасибо за ответ. Нашёл вариант вот такой: SELECT * FROM ( SELECT id, name, rownumber() OVER() AS ROW_NEXT FROM hockey ) as product_temp WHERE ROW_NEXT BETWEEN 0 and 100 У меня будет веб-приложение (страничка-jsp) а там легко сохранять 0 и 100, потом изменять эти значения на 101 и 200, и так далее... Хотелось бы услышать ваш вариант. Записи будут добавляться постоянно. Это тестовое приложение для изменения записей в таблице, но возможно практическое применение.На миллионе записей у вас будет очень плохая производительность. Если вам действительно нужно пейджить такое огромное кол-во записей, то здесь я вижу 2 варианта: 1. Держать отдельную таблицу, в которой при каждой вставке/удалении надо будет перенумеровывать строки без пропусков 2. Открывать scrollable курсор и фетчить записи по абсолютному/относительному смещению по нужному кол-ву записей 1-й не подхоит из-за частых изменений 2-й может не подойти, если вы не сможете сохранять для пользователя его ResultSet между вызовами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 13:39 |
|
||
|
запрос на выборку данных
|
|||
|---|---|---|---|
|
#18+
1. Держать отдельную таблицу, в которой при каждой вставке/удалении надо будет перенумеровывать строки без пропусков 2. Открывать scrollable курсор и фетчить записи по абсолютному/относительному смещению по нужному кол-ву записей 1-й не подхоит из-за частых изменений 2-й может не подойти, если вы не сможете сохранять для пользователя его ResultSet между вызовами 1. Не пойму для чего нужна отдельная таблица? Можно немного поподробнее? 2. Я в программировании БД не силён, думаю надо почитать литературу. А всё же если просто делать пэйджинг без редактирования записей (для начала так - просмотр данных и всё), мой вариант годится? Т.е. на форме будет две кнопки - предыдущие 100 записей , следующие 100 записей . И при нажатии на каждую кнопку, будет вызываться select (см. выше какой) и данные будут отображаться на jsp-страничке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2008, 15:16 |
|
||
|
|

start [/forum/topic.php?fid=43&tid=1603645]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 352ms |

| 0 / 0 |
