Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
У меня неприлично долго выполняется запрос типа select * from t offset 5000000 limit 10 Впечатление такое, что запрос реально выбирает 5 млн, и потмо отдает мне 10 записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:14 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
Winnipuh Впечатление такое, что запрос реально выбирает 5 млн, и потмо отдает мне 10 записей Так и есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:33 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
Ну вообще-то существует команда EXPLAYN :) Его неплохо бы глянуть. А во вторых, offset+limit работают действительно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:34 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
добавлю.. интересный эфект возникает когда делаете limit 1 for update. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 12:41 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
> А во вторых, offset+limit работают действительно так. Накуя??? Тем более что никаких сортировок и группировок в запросе нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 10:20 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
ShadyAngelНакуя???по определению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 10:45 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
ShadyAngelНакуя???Чтобы подсчитать (и пропустить) кол-во строк равное offset. ShadyAngelТем более что никаких сортировок ... в запросе нет.Сортировка должна быть, limit нельзя использовать без order by: дока . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 11:07 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
ShadyAngel> А во вторых, offset+limit работают действительно так. Накуя??? Тем более что никаких сортировок и группировок в запросе нет. А такой запрос зачем? В доке написано - использовать без сортировок можно, но результат не стабилен и зависит от цен на дрова в Зимбабве. Так что запрос можно переписать как: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 11:12 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat ShadyAngelНакуя???Чтобы подсчитать (и пропустить) кол-во строк равное offset. ShadyAngelТем более что никаких сортировок ... в запросе нет.Сортировка должна быть, limit нельзя использовать без order by: дока . Я использую так и работает: select '40e2381a-e115-4a26-a2a3-5a7712340e0e',x.xstring from xprop x offset 3458189 limit 100 Не нельзя, а рекомендуют When using LIMIT, it is a good idea to use an ORDER BY clause that constrains the result rows into a unique order. Otherwise you will get an unpredictable subset of the query's rows — you may be asking for the tenth through twentieth rows, but tenth through twentieth in what ordering? You don't know what ordering unless you specify ORDER BY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 11:13 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
Winnipuh Я использую так и работает:кхм. мдя. смело. и не сетсняицо. смело. мдя. кхм. я бы не признавался. да. О. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 11:18 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
assaпо определению. По определению сервер БД должен уметь рассчитывать положение N-ой записи в файле данных, так что найти 5миллонную запись и вытащить 10 следующих для него не должно составить труда. Другое дело если используется сортировка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 12:07 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
ShadyAngelПо определению сервер БД должен уметь рассчитывать положение N-ой записи в файле данных, По какому такому определению? В оракле, вон, вообще нет оффсетов и лимитов. И ничего живут. И даже неплохо живут. И даже как-то не возникает вопросов. А здесь им видите ли должны. То сервер должен уметь форматировать дату сам, телепатически, то считать строки должен. А программер должен только одну строчечку написать, и сервер сам все придумает и сделает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 12:12 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
ShadyAngelПо определению сервер БД должен уметь рассчитывать положение N-ой записи в файле данных, так что найти 5миллонную запись и вытащить 10 следующих для него не должно составить труда.НЕТ Строки в таблице не упорядочены. Равно как и столбцы. :-О Сервер БД не обязан хранить данные именно в файле. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 12:33 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
ShadyAngelПо определению сервер БД должен уметь рассчитывать положение N-ой записи в файле данных, так что найти 5миллонную запись и вытащить 10 следующих для него не должно составить труда. Другое дело если используется сортировка.В базе нет "N-ой записи в файле данных" равно как и нет строки с порядковым номером 5 000 000. Словосочетание "порядок строк в результате запроса без сортировки - неопределен" пишут в любой книжке по SQL в самом начале, на первых страницах. Почитайте на досуге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 14:20 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
ShadyAngel assaпо определению. По определению сервер БД должен уметь рассчитывать положение N-ой записи в файле данных, так что найти 5миллонную запись и вытащить 10 следующих для него не должно составить труда. Другое дело если используется сортировка. Сортировка всегда присутствует. Если она не указана, то в качестве порядка используется фактическое положение записей в БД. Рассчитать положение какой-то определенной записи нельзя, кроме случаев явно указных индексом, т.к. они расположены в файле данных хаотически, в смысле своей логической организации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 14:37 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
Давайте отделять понятия SQL от ExecutionPlan и от DataStorage. alex_v13Сортировка всегда присутствует. Если она не указана... Сортировка - этап ExecutionPlan, в котором переупорядочивается набор данных. Конечно же присутствует не всегда. И указать или не указывать ее явно мы не можем. Указать в SQL-запросе мы можем порядок (или упорядочивание) с помощью SQL-условия order by. alex_v13в качестве порядка используется фактическое положение записей в БДЭто, возможно, верно для нынешней версии PG. Нельзя этого утверждать для любой СУБД, или для PG новых версий. Фактическое положение записей в БД - понятие DataStorage. alex_v13Рассчитать положение какой-то определенной записи нельзя, кроме случаев явно указных индексомНе понятно. Рассчитать на основании чего, какие входные данные? Индекс ничего не указывает. Индекс - это вспомогательная структура данных в DataStorage. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 15:21 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat Спасибо, что расписали все подробно, но сути этого не меняет. авторПо определению сервер БД должен уметь рассчитывать положение N-ой записи в файле данных Это не верно, равно как и запрос Код: plaintext Сортировка не как часть плана выполнения, но как часть реализации этого запроса и генерации его результата все равно будет, критерии ее я предположил (порядок записей в базе). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 16:31 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
alex_v13 Сортировка всегда присутствует. Если она не указана, то в качестве порядка используется фактическое положение записей в БД. Не всегда. Если доступ идет по индексу - то нет. Некторые СУБД всегда сортируют на пример по PK. В общем никто ничего никому не гарантирует. Т.е. неверным будет утверждение что для любой выборки можно указать алгоритм сортировки, без знания внутренностей СУБД. А то что она хоть какая-то будет - ну наверное это нереляционный факт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 16:44 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
alex_v13Спасибо, что расписали все подробно, но сути этого не меняет.Отсутствие/пренебрежение/искажение определений и терминов мешает пониманию и общению. alex_v13Сортировка не как часть плана выполнения, но как часть реализации этого запроса и генерации его результата все равно будет, критерии ее я предположил (порядок записей в базе).1. Не путайте "сортировку элементов", как процесс упорядочивания, с "порядком элементов". Словарь: сортировка. 2. "План выполнения" - это и есть описание "реализации запроса", то есть "генерации его результата". Это все одно и то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 17:13 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat Слегка поспорю, хотя опять же, к вопросу автора темы это уже не имеет никакого отношениия... 2. "План выполнения" - это и есть описание "реализации запроса", то есть "генерации его результата". Это все одно и то же. "План выполнения" - это именно план, а фактическая его реализация, связанная с функциональным выполнением движком базы своих ф-й есть "реализация запроса", и уже потом это приводит к "генерации его результата". Да, фактически "сортировка" и "порядок" разные понятия для SQL, но в данном контесте важен именно порядок выдачи данных результата, а получился ли он в результате применения сортировки, или естественным путем - не влияет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 17:42 |
|
||
|
как работает offset x limit y?
|
|||
|---|---|---|---|
|
#18+
alex_v13"План выполнения" - это именно план, а фактическая его реализация, связанная с функциональным выполнением движком базы своих ф-й есть "реализация запроса", и уже потом это приводит к "генерации его результата"."План выполнения" - это именно ОПИСАНИЕ "фактической реализации запроса, связанной с функциональным выполнением движком базы своих ф-й". Это одно и то же. докаThe execution plan shows how the table(s) referenced by the statement will be scanned ... what join algorithms will be used to bring together the required rows from each input table. alex_v13Да, фактически "сортировка" и "порядок" разные понятия для SQLДа, это разные понятия, не только для SQL. alex_v13в данном контесте важен именно порядок выдачи данных результата, а получился ли он в результате применения сортировки, или естественным путем - не влияетДа, тогда давайте и называть будем своими именами "порядок" - "порядком", а "сортировку" - "сортировкой". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 17:57 |
|
||
|
|

start [/forum/topic.php?fid=53&tid=2005089]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 360ms |

| 0 / 0 |
