forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit80b9e9c
committed
Improve performance of index-only scans with many index columns.
StoreIndexTuple was a loop over index_getattr, which is O(N^2)if the index columns are variable-width, and the performanceimpact is already quite visible at ten columns. The obviousmove is to replace that with a call to index_deform_tuple ...but that's *also* a loop over index_getattr. Improve it tobe essentially a clone of heap_deform_tuple.(There are a few other places that loop over all index columnswith index_getattr, and perhaps should be changed likewise,but most of them don't seem performance-critical. Anyway, therest would mostly only be interested in the index key columns,which there aren't likely to be so many of. Wide index tuplesare a new thing with INCLUDE.)Konstantin KnizhnikDiscussion:https://postgr.es/m/e06b2d27-04fc-5c0e-bb8c-ecd72aa24959@postgrespro.ru1 parent78b408a commit80b9e9c
File tree
2 files changed
+72
-17
lines changed- src/backend
- access/common
- executor
2 files changed
+72
-17
lines changedLines changed: 65 additions & 4 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
418 | 418 |
| |
419 | 419 |
| |
420 | 420 |
| |
| 421 | + | |
| 422 | + | |
| 423 | + | |
421 | 424 |
| |
422 | 425 |
| |
423 | 426 |
| |
424 | 427 |
| |
425 | 428 |
| |
426 |
| - | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
427 | 436 |
| |
428 | 437 |
| |
429 |
| - | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
430 | 442 |
| |
431 |
| - | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
432 | 447 |
| |
433 |
| - | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
434 | 495 |
| |
435 | 496 |
| |
436 | 497 |
| |
|
Lines changed: 7 additions & 13 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
269 | 269 |
| |
270 | 270 |
| |
271 | 271 |
| |
272 |
| - | |
273 |
| - | |
274 |
| - | |
275 |
| - | |
276 |
| - | |
277 | 272 |
| |
278 |
| - | |
279 |
| - | |
280 |
| - | |
281 |
| - | |
282 |
| - | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
283 | 278 |
| |
284 |
| - | |
| 279 | + | |
285 | 280 |
| |
286 | 281 |
| |
287 |
| - | |
288 |
| - | |
| 282 | + | |
289 | 283 |
| |
290 | 284 |
| |
291 | 285 |
| |
|
0 commit comments
Comments
(0)