Optimumkan indeks jadual dalam MySQL
<p>Saya mempunyai jadual berikut (menjejaki carian): </p>
<pre class="brush:sql;toolbar:false;">BUAT JADUAL `carian` (
`id` int(10) tidak ditandatangani BUKAN NULL AUTO_INCREMENT,
`dipadam` tinyint(1) tidak ditandatangani BUKAN NULL,
`pertanyaan` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`userId` int(10) tidak ditandatangani BUKAN NULL,
`connectionId` int(10) unsigned NOT NULL,
`pluginId` int(10) tidak ditandatangani BUKAN NULL,
KUNCI UTAMA (`id`),
KEY `key,deleted` (`publicId`,`deleted`),
KEY `dipadamkan,userId` (`dipadam`,`userId`),
KEY `deleted,connectionId,pluginId` (`deleted`,`connectionId`,`pluginId`)
) ENJIN=CHARSET LALAI InnoDB=utf8mb4 COLLATE=utf8mb4_unicode_ci;
</pra>
<p>Kadangkala saya menjalankan pertanyaan yang mengembalikan semua pertanyaan yang dilakukan oleh pengguna tertentu. Dalam kes ini saya mempunyai indeks dengan lajur berikut: dipadam, userId. <kod></kod></p>
<p>Pada masa lain, saya menjalankan pertanyaan yang mengembalikan semua pertanyaan yang dilaksanakan oleh "sambungan" dan "plugin" tertentu. Dalam kes ini saya mempunyai indeks dengan lajur berikut: dipadamkan, connectionId, pluginId. <kod></code></p>
<p>Saiz indeks berkembang dengan ketara, jadi saya cuba memahami cara untuk mengoptimumkannya dengan lebih baik. </p>
<p>Adakah terdapat nilai dalam menggabungkan kedua-dua indeks ini menjadi satu? Sebagai contoh, ia boleh mengandungi lajur berikut: <code>deleted</code>,<code>userId</code>,<code>connectionId</code>,<code>pluginId</code> ;/ p>
<p>Saya tidak pasti sama ada melakukan ini akan mengurangkan saiz indeks sementara masih memenuhi keperluan pertanyaan. </p>