|
Пагинация
|
|||
---|---|---|---|
#18+
Добрый день! Натолкнулся на интересную статью https://use-the-index-luke.com/no-offset Хотелось бы понять, как при таком подходе будет выглядеть сортировка по неуникальному полю. У меня есть вот такая идея, но не знаю насколько это оптимально: SELECT ... FROM ... WHERE ... AND CONCAT(name,id) < CONCAT(last_seen_id,last_seen_name) ORDER BY name DESC FETCH FIRST 10 ROWS ONLY Достаточно ли будет индекса по name или нужно делать нечто вот такое: CREATE INDEX myindex ON table USING btree ( CONCAT(name,id) ); Насколько вообще все это будет производительнее, чем пагинация limit/offset? Может есть лучший паттерн? Поделитесь опытом) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2019, 15:50 |
|
Пагинация
|
|||
---|---|---|---|
#18+
alex1610, вот так хотел SELECT ... FROM ... WHERE ... AND CONCAT(name,id) < CONCAT(last_seen_name,last_seen_id) ORDER BY name DESC FETCH FIRST 10 ROWS ONLY ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2019, 15:52 |
|
Пагинация
|
|||
---|---|---|---|
#18+
alex1610, Об этом лучше расписано в другой статье там же: https://use-the-index-luke.com/sql/partial-results/fetch-next-page ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2019, 15:53 |
|
Пагинация
|
|||
---|---|---|---|
#18+
Melkij, Спасибо! И как я сам не заметил ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2019, 16:13 |
|
|
start [/forum/topic.php?fid=53&tid=1995101]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
3ms |
others: | 16ms |
total: | 147ms |
0 / 0 |