Indeks vs partisi

20

Mengapa tidak mungkin untuk mencapai peningkatan kinerja hanya dengan indeks, sehingga teknik lain seperti tabel partisi menjadi perlu? Pertanyaannya hanya berkaitan dengan kinerja, tentu saja partisi yang berbeda dapat dimasukkan ke dalam tablespace yang berbeda, yang memiliki efek lain yang tidak dapat dicapai dengan indeks.

Atau dengan kata lain, hanya kinerja bijaksana: apakah mungkin untuk mencapai peningkatan kinerja yang sama dengan indeks seperti dengan partisi tabel?

paweloque
sumber
2
Alih-alih memikirkan pengindeksan dan pemartisian sebagai salah satu atau solusi untuk peningkatan kinerja, Anda harus memikirkan keduanya sebagai alat yang dapat digunakan secara terpisah atau bersama-sama untuk mencapai peningkatan kinerja dalam database Anda.
ScottCher

Jawaban:

18

Tidak, mempartisi memungkinkan beberapa pemindaian tabel dibatasi ke partisi tertentu. Indeks cenderung tidak berguna jika Anda akan mengembalikan lebih dari 2 hingga 4 persen dari data tabel. Jika kriteria pemilihan Anda memungkinkan kueri dilokalkan ke partisi tertentu, maka partisi lain tidak perlu dipindai.

Pengoptimal mungkin dapat memilih untuk menggunakan pemindaian tabel untuk beberapa partisi dan indeks untuk yang lain. Saya belum melihat ada rencana menjelaskan yang menunjukkan itu terjadi.

Jika Anda memiliki banyak data historis, maka kueri untuk data saat ini dapat dibangun untuk membatasi partisi yang dianggap untuk yang berisi data saat ini.

BillThor
sumber
3
Saya, Anda membuat partisi. Pastikan untuk memilih perangkat penyimpanan yang tepat untuk setiap partisi. Letakkan partisi data aktual pada drive kecepatan tinggi dan yang lebih lama jenis lainnya.
Nico
7

Untuk menjawab langsung pertanyaan terakhir Anda: tidak, saya tidak berpikir itu setara. Pikirkan tabel yang sangat besar (puluhan GB) yang perlu dicari data sehari. Menggunakan partisi harian, Anda hanya akan memindai data hari itu, tanpa penalti ruang, sementara indeks adalah struktur terpisah yang mungkin tidak memiliki cukup informasi (dan juga membutuhkan ruang, yang menjadi perhatian ketika berbicara tentang database besar) atau mungkin tidak cukup selektif.

Bagaimanapun, indeks dan partisi tidak bersaing untuk mendapatkan manfaat yang sama dalam penggunaan dan kinerja. Anda harus menemukan saldo di basis data Anda.

Marian
sumber