Rumah  >  Soal Jawab  >  teks badan

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>
P粉841870942P粉841870942452 hari yang lalu548

membalas semua(1)saya akan balas

  • P粉269847997

    P粉2698479972023-07-26 00:56:46

    Anda boleh menggunakan indeks beberapa kali, tetapi hanya dari kiri ke kanan, tanpa melangkau sebarang medan. Contohnya: indeks (medan A, medan B, medan C), maka anda boleh menggunakan indeks ini untuk menanyakan medan A, atau medan pertanyaan A dan medan B, atau medan pertanyaan A, medan B dan medan C, tetapi ia tidak boleh digunakan Akses ke medan A dan medan C atau medan B dan medan C.

    Jadi ini tidak berkenaan dengan pertanyaan anda.


    balas
    0
  • Batalbalas