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?
oracle
performance
paweloque
sumber
sumber
Jawaban:
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.
sumber
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.
sumber