Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
CREATE INDEX
CREATE INDEXmendefinisikan indeks baru. Di Aurora DSQL, pembuatan indeks selalu asinkron, jadi Anda harus menentukan kata kunci. ASYNC Untuk informasi tentang cara Aurora DSQL menjalankan build indeks asinkron dan cara memantaunya, lihat. Indeks asinkron di Aurora DSQL
Sintaksis yang didukung
CREATE [ UNIQUE ] INDEX ASYNC [ [ IF NOT EXISTS ] name ] ON table_name ( { column_name | ( expression ) } [ NULLS { FIRST | LAST } ] [, ...] ) [ INCLUDE ( column_name [, ...] ) ] [ NULLS [ NOT ] DISTINCT ]
Deskripsi
CREATE INDEXmembangun indeks pada kolom tertentu dari tabel yang ditentukan. Indeks terutama digunakan untuk meningkatkan kinerja database, meskipun penggunaan yang tidak tepat dapat mengakibatkan kinerja yang lebih lambat.
Anda menentukan bidang kunci untuk indeks sebagai nama kolom, atau sebagai alternatif sebagai ekspresi yang ditulis dalam tanda kurung. Anda dapat menentukan beberapa bidang untuk membuat indeks multicolumn.
Bidang indeks dapat berupa ekspresi yang dihitung dari nilai satu atau lebih kolom dari baris tabel. Gunakan fitur ini untuk mendapatkan akses cepat ke data berdasarkan beberapa transformasi data dasar. Misalnya, indeks yang dihitung upper(col) memungkinkan klausa WHERE upper(col) = 'JIM' untuk menggunakan indeks.
Semua fungsi dan operator yang digunakan dalam definisi indeks harus tidak berubah. Artinya, hasil mereka harus bergantung hanya pada argumen mereka dan tidak pernah pada pengaruh luar, seperti isi tabel lain atau waktu saat ini. Pembatasan ini memastikan bahwa perilaku indeks terdefinisi dengan baik. Untuk menggunakan fungsi yang ditentukan pengguna dalam ekspresi indeks, ingatlah untuk menandai fungsi IMMUTABLE saat Anda membuatnya.
Parameter
UNIQUE-
Menyebabkan sistem memeriksa nilai duplikat dalam tabel saat membuat indeks, jika data sudah ada, dan setiap kali Anda menambahkan data. Upaya untuk menyisipkan atau memperbarui data yang akan menghasilkan entri duplikat menghasilkan kesalahan.
IF NOT EXISTS-
Jangan memunculkan kesalahan jika relasi dengan nama yang sama sudah ada. Pemberitahuan dikeluarkan dalam kasus ini. Perhatikan bahwa tidak ada jaminan bahwa indeks yang ada menyerupai indeks yang akan dibuat. Nama indeks diperlukan ketika
IF NOT EXISTSditentukan. INCLUDE-
Klausa
INCLUDEopsional menentukan daftar kolom untuk disertakan dalam indeks sebagai kolom non-kunci. Anda tidak dapat menggunakan kolom non-kunci dalam kualifikasi pencarian pemindaian indeks, dan Aurora DSQL mengabaikannya untuk tujuan kendala keunikan atau pengecualian apa pun yang diberlakukan indeks. Namun, pemindaian indeks saja dapat mengembalikan isi kolom non-kunci tanpa harus mengunjungi tabel indeks, karena tersedia langsung dari entri indeks. Oleh karena itu, menambahkan kolom non-kunci memungkinkan pemindaian indeks saja untuk kueri yang sebaliknya tidak dapat menggunakannya.Ekspresi tidak didukung sebagai kolom yang disertakan, karena tidak dapat digunakan dalam pemindaian indeks saja.
name-
Nama indeks yang akan dibuat. Anda tidak dapat menyertakan nama skema di sini. Aurora DSQL selalu membuat indeks dalam skema yang sama dengan tabel induknya. Nama indeks harus berbeda dari nama relasi lain, seperti tabel, urutan, indeks, atau tampilan, dalam skema itu. Jika Anda menghilangkan nama, Aurora DSQL memilih nama yang sesuai berdasarkan nama tabel induk dan nama kolom yang diindeks.
table_name-
Nama, secara opsional memenuhi syarat skema, dari tabel yang akan diindeks.
column_name-
Nama kolom tabel.
expression-
Ekspresi berdasarkan satu atau lebih kolom tabel. Anda biasanya harus menulis ekspresi dengan tanda kurung di sekitarnya, seperti yang ditunjukkan dalam sintaks. Namun, Anda dapat menghilangkan tanda kurung jika ekspresi memiliki bentuk panggilan fungsi.
NULLS FIRST-
Menentukan bahwa nol mengurutkan sebelum non-nol.
NULLS LAST-
Menentukan bahwa nol mengurutkan setelah non-nol.
NULLS DISTINCTNULLS NOT DISTINCT-
Menentukan apakah nilai nol dianggap berbeda, yaitu, tidak sama, untuk indeks unik. Defaultnya adalah bahwa mereka berbeda, sehingga indeks unik dapat berisi beberapa nilai nol dalam kolom.
Contoh
Untuk membuat indeks unik pada kolom title dalam tabelfilms.
CREATE UNIQUE INDEX ASYNC title_idx ON films (title);
Untuk membuat indeks unik pada kolom title dengan kolom yang disertakan director dan rating dalam tabelfilms.
CREATE UNIQUE INDEX ASYNC title_idx ON films (title) INCLUDE (director, rating);
Untuk membuat indeks pada ekspresilower(title), yang memungkinkan pencarian peka huruf besar-kecil yang efisien.
CREATE INDEX ASYNC ON films ((lower(title)));
Contoh ini menghilangkan nama indeks, jadi Aurora DSQL memilih nama, biasanya. films_lower_idx
Untuk membuat indeks dengan urutan nol non-default.
CREATE INDEX ASYNC title_idx_nulls_low ON films (title NULLS FIRST);