Data Management (DMS) mengintegrasikan fitur optimasi tinjauan SQL ke dalam aturan keamanan. Setelah Anda mengirimkan pernyataan SQL untuk perubahan data atau pada tab SQLConsole, DMS meninjau pernyataan SQL berdasarkan spesifikasi dalam aturan keamanan dan memberikan saran optimasi. Hal ini membantu Anda meninjau pernyataan SQL, mencegah pernyataan SQL yang tidak valid sebelum melakukan perubahan data, serta melindungi bisnis dari dampak negatif.
Prasyarat
Anda adalah administrator basis data (DBA) atau administrator DMS. Untuk informasi lebih lanjut, lihat Kelola Pengguna.
Aturan keamanan telah dibuat. Untuk informasi lebih lanjut tentang cara membuat aturan keamanan, lihat Kelola Aturan Keamanan.
Salah satu mesin basis data berikut digunakan:
MySQL: ApsaraDB RDS for MySQL, PolarDB for MySQL, ApsaraDB for MariaDB, PolarDB for Xscale, AnalyticDB for MySQL, dan basis data MySQL pihak ketiga.
Oracle
PolarDB for PostgreSQL(Kompatibel dengan Oracle)
OceanBase
Tindakan perilaku
DMS mendefinisikan tiga tindakan perilaku:
Harus Ditingkatkan: DMS menghentikan proses dan mengembalikan pesan jika Anda tidak mengoptimalkan pernyataan SQL. Aturan tinjauan SQL default di DMS tidak mencakup Must Improve.
CatatanUntuk informasi lebih lanjut tentang item pemeriksaan aturan tinjauan SQL, lihat Item Pemeriksaan.
Sebagai contoh, jika Anda menetapkan tindakan perilaku dari aturan
Tabel harus memiliki kunci utamamenjadi Harus Ditingkatkan, dan seorang pengembang mengirimkan pernyataan SQL untuk membuat tabel tanpa menentukan kunci utama, DMS akan menghentikan eksekusi pernyataan SQL dan mengembalikan pesan untuk meminta pengembang menentukan kunci utama. Setelah pernyataan SQL yang dimodifikasi lulus verifikasi, DMS dapat mengeksekusinya.Masalah Potensial: DMS mengingatkan bahwa pernyataan SQL memiliki masalah potensial, tetapi tidak menghentikan proses.
Saran Perbaikan: DMS menyarankan untuk mengoptimalkan pernyataan SQL, tetapi tidak menghentikan proses.
Fitur yang didukung dalam mode kontrol yang berbeda
DMS menyediakan tiga mode kontrol. Untuk informasi lebih lanjut, lihat Mode Kontrol.
Operasi | Kolaborasi Keamanan | Perubahan Stabil | Manajemen Fleksibel |
Aktifkan atau nonaktifkan aturan. | Didukung | Didukung | Didukung |
Tetapkan tindakan perilaku untuk aturan. | Didukung | Tidak didukung | Tidak didukung |
Ubah parameter aturan. Anda dapat menetapkan parameter untuk aturan tertentu, seperti jumlah indeks dalam tabel dan jumlah kolom dalam tabel. | Didukung | Didukung | Tidak didukung |
Masukkan deskripsi tindakan perilaku. Anda dapat memasukkan latar belakang tindakan perilaku untuk sebuah aturan. | Didukung | Tidak didukung | Tidak didukung |
Prosedur
Aturan keamanan mencakup aturan tinjauan SQL default. Contoh ini menunjukkan cara menyesuaikan aturan keamanan dan menetapkan tindakan perilaku dari aturan Tabel harus memiliki kunci utama menjadi Must Improve.
- Masuk ke Konsol DMS V5.0.
Pindahkan penunjuk ke ikon
di sudut kiri atas dan pilih .CatatanJika Anda menggunakan konsol DMS dalam mode normal, pilih di bilah navigasi atas.
Temukan set aturan keamanan yang ingin Anda modifikasi dan klik Edit di kolom Actions.
CatatanJika Anda ingin mengonfigurasi Flexible Management atau Stable Change pada set aturan keamanan, cari set aturan keamanan yang ingin dikonfigurasi dan klik SQL audit optimization recommendations di kolom Tindakan.
Di panel kiri halaman Details, klik tab SQL audit optimization recommendations.
Temukan aturan bernama
Tabel harus memiliki kunci utamadan klik Edit di kolom Tindakan.
CatatanAnda dapat mengklik ikon
di sebelah kanan Tag, Behavioral action, atau Status untuk memfilter aturan. Parameter Tag menentukan ruang lingkup di mana aturan berlaku. Aturan dapat diterapkan pada pernyataan DDL dan pernyataan DML. Parameter Status menentukan apakah aturan diaktifkan atau dinonaktifkan.Di kotak dialog Rule content configuration, atur parameter yang dijelaskan dalam tabel berikut.

Parameter
Deskripsi
Behavioral action
Dalam contoh ini, atur parameter Behavioral action menjadi Must Improve.
CatatanAturan tinjauan SQL default di DMS tidak mengandung Must Improve.
Remarks
Masukkan deskripsi tindakan perilaku untuk aturan ini, seperti informasi latar belakang.
Klik OK.
Jika Anda menggunakan fitur seperti pengembangan data, perubahan data, dan tinjauan SQL, fitur optimasi tinjauan SQL memverifikasi pernyataan SQL berdasarkan aturan keamanan yang dikonfigurasikan.
Dalam contoh ini, jika pernyataan SQL tidak sesuai dengan aturan
Tabel harus memiliki kunci utama, DMS menghentikan proses.
Item pemeriksaan
Tabel berikut menjelaskan item pemeriksaan yang didukung oleh fitur tinjauan SQL.
Desain Skema
Item pemeriksaan
Pernyataan SQL yang berlaku
Titik pemeriksaan
Properti database
CREATE DATABASENama aturan: Set karakter yang digunakan untuk membuat database harus dibatasi. Pengenal aturan: CREATE_DATABASE_LIMIT_CHARSET.
Properti tabel
CREATE TABLEALTER TABLE
Nama aturan: Tabel harus memiliki kunci utama. Pengenal aturan: TABLE_MUST_HAVE_PRIMARY_KEY.
Nama aturan: Tabel harus berisi komentar. Pengenal aturan: TABLE_MUST_HAVE_COMMENTS.
Nama aturan: Tabel tidak boleh mengandung kunci asing. Pengenal aturan: TABLE_FORBID_USE_FOREIGN_KEY.
Nama aturan: Sensitivitas huruf besar/kecil nama tabel harus dibatasi. Pengenal aturan: TABLE_NAME_LIMIT_CHAR_CASE.
Nama aturan: Mesin penyimpanan tabel harus dibatasi. Pengenal aturan: TABLE_LIMIT_STORE_ENGINE.
Nama aturan: Tabel tidak boleh dipartisi. Pengenal aturan: TABLE_FORBID_USE_PARTITION.
Nama aturan: Tabel harus berisi kolom tertentu. Pengenal aturan: TABLE_MUST_HAVE_SOME_COLUMN.
Nama aturan: Set karakter tabel harus dibatasi. Pengenal aturan: TABLE_MUST_USE_SOME_CHARSET.
Nama aturan: Aturan validasi tabel harus dibatasi. Pengenal aturan: TABLE_MUST_USE_SOME_COLLATION.
Nama aturan: Nama tabel tidak boleh menjadi kata kunci. Pengenal aturan: TABLE_NAME_FORBID_KEYWORD.
Nama aturan: Jumlah indeks dalam tabel harus dibatasi. Pengenal aturan: TABLE_LIMIT_INDEX_COUNT.
Nama aturan: Jumlah kolom dalam tabel harus dibatasi. Pengenal aturan: TABLE_LIMIT_COLUMN_COUNT.
Nama aturan: Nilai awal kolom auto-increment dalam tabel harus dibatasi. Pengenal aturan: TABLE_LIMIT_INIT_AUTO_INCREMENT.
Nama aturan: Tabel harus berisi kolom kunci utama auto-increment. Pengenal aturan: LIMIT_PRIMARY_COLUMN_AUTO_INCREMENT.
Nama aturan: Penggunaan tampilan harus dibatasi untuk tabel. Pengenal aturan: TABLE_FORBID_USE_VIEW.
Nama aturan: Penggunaan pemicu harus dibatasi untuk tabel. Pengenal aturan: TABLE_FORBID_USE_TRIGGER.
Nama aturan: Penggunaan acara harus dibatasi untuk tabel. Pengenal aturan: TABLE_FORBID_USE_EVENT.
Nama aturan: Penggunaan prosedur tersimpan harus dibatasi untuk tabel. Pengenal aturan: TABLE_FORBID_USE_STORED_PROCEDURE.
Nama aturan: Penggunaan fungsi yang ditentukan pengguna (UDF) harus dibatasi untuk tabel. Pengenal aturan: TABLE_FORBID_USE_CUSTOM_FUNCTION.
Nama aturan: Kami merekomendasikan Anda menggunakan sintaksis
ALTER TABLE CONVERTuntuk mengubah set karakter tabel. Pengenal aturan: MODIFY_CHARSET_USE_ALTER_TABLE_CONVERT.
Properti kolom
CREATE TABLEALTER TABLE
Nama aturan: Nama kolom tidak boleh menjadi kata kunci. Pengenal aturan: COLUMN_NAME_FORBID_KEYWORD.
Nama aturan: Sensitivitas huruf besar/kecil nama kolom harus dibatasi. Pengenal aturan: COLUMN_NAME_LIMIT_CHAR_CASE.
Nama aturan: Set karakter kolom tidak boleh ditentukan. Pengenal aturan: COLUMN_FORBID_SET_CHARSET.
Nama aturan: Tipe data tertentu tidak boleh digunakan dalam kolom. Pengenal aturan: COLUMN_FORBID_DATA_TYPES.
Nama aturan: Kolom harus berisi komentar. Pengenal aturan: COLUMN_MUST_HAVE_COMMENTS.
Nama aturan: Panjang bidang yang tipenya
CHARharus dibatasi. Pengenal aturan: COLUMN_LIMIT_CHAR_LENGTH.Nama aturan: Panjang bidang yang tipenya
VARCHARharus dibatasi. Pengenal aturan: COLUMN_LIMIT_VARCHAR_LENGTH.Nama aturan: Setiap kolom harus menggunakan klausa
NOT NULL. Pengenal aturan: COLUMN_MUST_SET_NOT_NULL.Nama aturan: Nama yang direkomendasikan untuk kolom auto-increment adalah
ID. Pengenal aturan: COLUMN_AUTO_INCREMENT_NAME_ID.Nama aturan: Kolom auto-increment harus berisi atribut UNSIGNED. Pengenal aturan: COLUMN_AUTO_INCREMENT_UNSIGNED.
Nama aturan: Tipe data
FLOATdanDOUBLEtidak boleh digunakan. Kami merekomendasikan Anda menggantinya dengan tipe dataDECIMAL. Pengenal aturan: COLUMN_FORBID_FLOAT_DOUBLE_TYPE.Nama aturan: Setiap kolom harus memiliki nilai default. Pengenal aturan: EACH_COLUMN_NEED_DEFAULT_VALUE.
Nama aturan: Set validasi kolom tidak boleh ditentukan. Pengenal aturan: COLUMN_FORBID_SET_COLLATE.
Nama aturan: Kolom tidak boleh diubah namanya saat Anda memodifikasi tabel. Pengenal aturan: ALTER_TABLE_FORBID_RENAME_COLUMN.
Nama aturan: Kolom tidak boleh dihapus saat Anda memodifikasi tabel. Pengenal aturan: ALTER_TABLE_FORBID_DROP_COLUMN.
Nama aturan: Tipe data tidak boleh diubah saat Anda memodifikasi tabel. Pengenal aturan: ALTER_TABLE_FORBID_MODIFY_DATA_TYPE.
Nama aturan: Semua bidang yang ditambahkan saat Anda memodifikasi tabel bisa kosong. Pengenal aturan: ALTER_TABLE_ADD_COLUMN_NULLABLE.
Nama aturan: Nilai default harus ditentukan untuk bidang yang tidak kosong yang ditambahkan saat Anda memodifikasi tabel. Pengenal aturan: ALTER_ADD_NOT_NULL_COLUMN_NEED_DEFAULT.
Nama aturan: Nilai default harus ditentukan saat bidang yang bisa dibiarkan kosong dimodifikasi sebagai bidang yang tidak kosong. Pengenal aturan: COLUMN_NULLABLE_TO_NOT_NEED_DEFAULT.
Nama aturan: Tipe data
ENUMtidak boleh digunakan. Kami merekomendasikan Anda menggantinya dengan tipe dataTINYINTatauCHAR. Pengenal aturan: COLUMN_FORBID_USE_ENUM_TYPE.Nama aturan: Bidang tidak boleh mengandung atribut
ZEROFILL. Pengenal aturan: COLUMN_DATA_TYPE_FORBID_ZEROFILL.
Properti indeks
CREATE TABLEALTER TABLE
Nama aturan: Indeks harus memiliki nama. Pengenal aturan: INDEX_MUST_HAVE_CLEARLY_NAME.
Nama aturan: Format penamaan indeks unik harus dibatasi. Pengenal aturan: UNIQUE_INDEX_NAME_PATTERN.
Nama aturan: Format penamaan indeks biasa harus dibatasi. Pengenal aturan: COMMON_INDEX_NAME_PATTERN.
Nama aturan: Jumlah kolom indeks harus dibatasi. Pengenal aturan: INDEX_LIMIT_CONTAINS_COLUMNS.
Nama aturan: Jumlah kolom kunci utama harus dibatasi. Pengenal aturan: PRIMARY_LIMIT_CONTAINS_COLUMNS.
Nama aturan: Tipe data kolom kunci utama harus dibatasi. Pengenal aturan: PRIMARY_LIMIT_COLUMN_DATA_TYPE.
Nama aturan: Kunci utama tidak boleh dihapus saat Anda memodifikasi tabel. Pengenal aturan: ALTER_TABLE_FORBID_DROP_PRIMARY.
Nama aturan: Indeks tidak boleh dihapus saat Anda memodifikasi tabel. Pengenal aturan: ALTER_TABLE_FORBID_DROP_INDEX.
Kueri Data
Item pemeriksaan
Pernyataan SQL yang berlaku
Titik pemeriksaan
Pernyataan
SELECTSELECTINSERT SELECTKlausa subquery yang bersarang dalam pernyataan
UPDATEatauDELETE
Nama aturan: Dalam pernyataan
SELECT, kami merekomendasikan Anda menggunakan klausaWHERE. Pengenal aturan: SELECT_SUGGEST_ASSIGN_WHERE.Nama aturan: Dalam pernyataan
SELECT, kami merekomendasikan Anda untuk tidak menggunakan fungsiORDER BY RAND(). Pengenal aturan: SELECT_FORBID_USE_ORDER_BY_RAND.Nama aturan: Dalam pernyataan
SELECT, kami merekomendasikan Anda untuk tidak melakukan operasiGROUP BYpada konstanta. Pengenal aturan: SELECT_FORBID_GROUP_BY_CONST.Nama aturan: Dalam pernyataan
SELECT, kami merekomendasikan Anda untuk tidak melakukan operasiORDER BYpada konstanta. Pengenal aturan: SELECT_FORBID_ORDER_BY_CONST.Nama aturan: Dalam pernyataan
SELECT, kami merekomendasikan Anda untuk tidak melakukan operasiGROUP BYatauORDER BYpada tabel yang berbeda. Pengenal aturan: SELECT_FORBID_GROUP_ORDER_BY_DISTINCT_TABLE.Nama aturan: Dalam pernyataan
SELECT, kami merekomendasikan Anda untuk tidak melakukan operasiORDER BYuntuk mengurutkan beberapa bidang dalam arah pengurutan yang berbeda. Pengenal aturan: SELECT_FORBID_ORDER_BY_MULTI_COLUMN_RANK.Nama aturan: Dalam pernyataan
SELECT, kami merekomendasikan Anda untuk tidak menggunakan klausaGROUP BYatauORDER BYdalam ekspresi atau fungsi. Pengenal aturan: SELECT_FORBID_GROUP_ORDER_BY_EXPR_OR_FUNCTION.Nama aturan: Dalam pernyataan
SELECT, kami merekomendasikan Anda untuk tidak menggunakan operatorUNION. Pengenal aturan: SELECT_FORBID_USE_UNION.Nama aturan: Dalam pernyataan
SELECT, jumlah tabel yang digabungkan dibatasi. Pengenal aturan: SELECT_LIMIT_TABLE_JOIN_COUNT.Nama aturan: Dalam pernyataan
SELECT, nilai offset dari klausaLIMITdibatasi. Pengenal aturan: SELECT_CONFINE_LIMIT_MAX_OFFSET.Nama aturan: Dalam pernyataan
SELECT, kami merekomendasikan Anda untuk tidak menggunakan klausaHAVING. Pengenal aturan: SELECT_FORBID_USE_HAVING.
Klausa
WHEREPernyataan
SELECT,UPDATE,DELETE, atauINSERT SELECTyang berisi klausaWHERENama aturan: Dalam klausa
WHERE, kolom yang diindeks tidak boleh mengandung operator matematika atau fungsi. Pengenal aturan: WHERE_FORBID_INDEX_COLUMN_HAS_MATH.Nama aturan: Dalam klausa
WHERE, kami merekomendasikan Anda untuk tidak menggunakan wildcard untuk mencari kolom. Pengenal aturan: WHERE_FORBID_BEFORE_WILDCARD_SEARCH.Nama aturan: Dalam klausa
WHERE, DMS memeriksa apakah klausaLIKEmengandung wildcard. Pengenal aturan: WHERE_CHECK_LIKE_HAS_NOT_WILDCARD.Nama aturan: Dalam klausa
WHERE, kami merekomendasikan Anda untuk tidak menggunakan kueri terbalik sepertiNOT INdanNOT LIKE. Pengenal aturan: WHERE_FORBID_USE_REVERSE_SEARCH.Nama aturan: Dalam klausa
WHERE, jumlah elemen dalam klausaINdibatasi. Pengenal aturan: WHERE_LIMIT_IN_ITEM_MAX_COUNT.Nama aturan: Dalam klausa
WHERE, DMS memeriksa apakah tipe data kolom dikonversi secara implisit. Pengenal aturan: WHERE_CHECK_COLUMN_IMPLICIT_TYPE_CONVERSION.Nama aturan: Dalam klausa
WHERE, DMS memeriksa apakah kondisi filter dihubungkan dengan menggunakan operatorOR. Pengenal aturan: WHERE_CHECK_OR_LINK_CONDITION.
Perubahan Data
Item pemeriksaan
Pernyataan SQL yang berlaku
Titik pemeriksaan
Penyisipan data
INSERT SELECTINSERT [IGNORE]REPLACE
Nama aturan: Dalam pernyataan
INSERT, kami merekomendasikan Anda menentukan daftar kolom tempat Anda ingin menyisipkan data. Pengenal aturan: ASSIGN_INSERT_COLUMN_NAME_LIST.Nama aturan: Dalam pernyataan
INSERT, nama kolom tempat Anda ingin menyisipkan data tidak boleh diduplikasi. Pengenal aturan: INSERT_COLUMN_NAME_FORBID_DUPLICATE.Nama aturan: Dalam pernyataan INSERT, nilai
NULLtidak dapat disisipkan ke kolomNOT NULL. Pengenal aturan: NOT_NULL_COLUMN_FORBID_INSERT_NULL.Nama aturan: Dalam pernyataan
INSERT, daftar kolom tempat Anda ingin menyisipkan data harus sesuai dengan daftar nilai yang ingin Anda sisipkan. Pengenal aturan: INSERT_COLUMN_MUST_MATCH_VALUES.Nama aturan: Dalam pernyataan INSERT, jumlah total baris dalam klausa
INSERT VALUESdibatasi. Pengenal aturan: LIMIT_INSERT_VALUES_TOTAL_ROWS.Nama aturan: Dalam pernyataan
INSERT, DMS memeriksa apakah tabel atau kolom tempat Anda ingin menyisipkan data ada. Pengenal aturan: INSERT_CHECK_TABLE_COLUMN_EXISTS.Nama aturan: Dalam pernyataan INSERT, kami merekomendasikan Anda untuk tidak menggunakan fungsi
SYSDATA(). Pengenal aturan: INSERT_FORBID_USE_SYSDATE_FUNCTION.
Pembaruan dan penghapusan data
UPDATEDELETE
Nama aturan: Dalam pernyataan
UPDATEatauDELETE, jumlah tabel yang digabungkan dibatasi. Pengenal aturan: UPDELETE_LIMIT_TABLE_JOIN_COUNT.Nama aturan: Dalam pernyataan
UPDATEatauDELETE, kami merekomendasikan Anda menggunakan klausaWHERE. Pengenal aturan: UPDELETE_ASSIGN_WHERE_CONDITION.Nama aturan: Dalam pernyataan
UPDATEatauDELETE, DMS memeriksa apakah klausaWHEREmengandung subquery. Pengenal aturan: UPDELETE_CHECK_WHERE_EXIST_SUB_QUERY.Nama aturan: Dalam pernyataan
UPDATEatauDELETE, ukuran data yang ditentukan oleh klausaLIMITdibatasi. Pengenal aturan: UPDELETE_CHECK_LIMIT_AFFECTED_ROWS.Nama aturan: Dalam pernyataan
UPDATEatauDELETE, DMS memeriksa apakah sintaksis yang digunakan untuk menggabungkan beberapa tabel lengkap. Sebagai contoh, DMS memeriksa apakah klausaONdihilangkan untuk klausaJOIN. Pengenal aturan: UPDELETE_CHECK_TABLE_JOIN_LOSS_ON.Nama aturan: Pernyataan
UPDATEatauDELETEtidak boleh mengandung klausaORDER BY. Pengenal aturan: UPDELETE_FORBID_ORDER_BY.Nama aturan: Dalam pernyataan
UPDATE, DMS memeriksa apakah pemisah sepertiANDdi antara beberapa kolom dalam klausaSETvalid. Pengenal aturan: UPDATE_CHECK_SET_ITEM_DELIMITER.Nama aturan: Dalam pernyataan
UPDATE, DMS memeriksa apakah awalan tabel ditentukan untuk kolom dari beberapa tabel dalam klausaSET. Pengenal aturan: UPDATE_MULTI_TABLE_CHECK_SET_COLUMN_PREFIX.Nama aturan: Dalam pernyataan
UPDATE, DMS memeriksa apakah tabel atau kolom yang ingin Anda perbarui ada. Pengenal aturan: UPDATE_CHECK_TABLE_COLUMN_EXIST.Nama aturan: Dalam pernyataan
UPDATE, DMS memeriksa apakah kunci utama diperbarui. Pengenal aturan: UPDATE_CHECK_PRIMARY_KEY_CHANGE.Nama aturan: Dalam pernyataan
UPDATE, DMS memeriksa apakah kunci unik diperbarui. Pengenal aturan: UPDATE_CHECK_UNIQUE_KEY_CHANGE.Nama aturan: Dalam pernyataan
UPDATE, kami merekomendasikan Anda juga memperbarui kolom Waktu Modifikasi dalam tabel. Pengenal aturan: UPDATE_ALSO_TO_UPDATE_MODIFY_TIME_COLUMN.Nama aturan: Dalam pernyataan
UPDATE, kami merekomendasikan Anda untuk tidak memperbarui kolom Waktu Pembuatan dalam tabel. Pengenal aturan: UPDATE_FORBID_MODIFY_CREATE_TIME_COLUMN.
Tabel berikut menjelaskan item pemeriksaan yang didukung oleh fitur optimasi tinjauan SQL.
Skenario
Titik pemeriksaan
Tidak tersedia
Nama aturan: Tabel yang kunci utamanya menggunakan tipe data
INTperlu dioptimalkan. Pengenal aturan: OPTIMIZE_PRIMARY_IS_INT_TABLE.Nama aturan: Kolom kunci utama auto-increment membutuhkan ruang yang cukup. Pengenal aturan: SNIFFING_AUTO_PRIMARY_REMAIN_SPACE.
Nama aturan: Nilai indeks unik tidak boleh kosong. Pengenal aturan: SNIFFING_UNIQUE_EXIST_NULL_RISK.
Nama aturan: Pernyataan DDL perlu dioptimalkan karena risiko kegagalan perubahan data atau penguncian tabel. Pengenal aturan: ALTER_LOCK_FAIL_SNIFFING_OPTIMIZE.
Nama aturan: Risiko injeksi SQL perlu dideteksi. Pengenal aturan: CHECK_SQL_INJECTION_RISK.
Nama aturan: Risiko
Force indexperlu dideteksi. Pengenal aturan: CHECK_SQL_ASSIGN_FORCE_INDEX.Nama aturan: Indeks perlu diperiksa dalam rencana eksekusi SQL. Pengenal aturan: SQL_EXPLAIN_INDEX_CHECK.
Nama aturan: DMS perlu menganalisis indeks dan memberikan saran. Pengenal aturan: DMS_INDEX_ANALYZE_AND_SUGGEST.