Pagination from two tables in SQL Server
I have two tables with the following schema:
Table A:ColumnA, UserId,... - rest of the schema omitted for brevityTable B:ColumnB, UserId,... - rest of the schema omitted for brevity
The tables can have duplicate values between them. For e.g - Table A row (<some-columnA-value>, 1, ...) and Table B row (<some-columnB-value>, 1, ...), 1 being the UserId.
Now, I have an API which is used to fetch all the UserId values from both tables. With increasing data, I want to now use pagination for this API and would like to modify the queries accordingly. There should also not be any duplicates over the pages or within a page.
How do I achieve this? Also a requirement is that I need to use keyset pagination rather than offset pagination since offset pagination gets slower as and when the offset increases.
So far, I have thought of using indexed views since there is only 1 column that I require to fetch but since the data keeps changing quite frequently and in large volumes, the overhead of maintaining the indexed view is not optimal.
Table A:
| Column A | UserId |
|---|---|
| x | 1 |
| y | 2 |
| z | 3 |
| w | 4 |
Table B:
| Column B | UserId |
|---|---|
| a | 1 |
| b | 3 |
| c | 5 |
| d | 6 |
Result (if no page size):
| UserId |
|---|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
Result (if page size 3)
Page 1
| UserId |
|---|
| 1 |
| 2 |
| 3 |
Page 2
| UserId |
|---|
| 4 |
| 5 |
| 6 |
Comments
Post a Comment