php - Isu klasik pengoptimuman indeks MYSQL,
某草草
某草草 2017-05-16 13:07:33
0
1
553

Soalannya adalah seperti berikut:

< /p>

Seperti ini

< /p>

Struktur jadual adalah seperti berikut:

BUAT JADUAL `lmx_app_category` (
  `id` int(11) NOT NULL DEFAULT '0' ULASAN 'Nombor kategori',
  `pid` tinyint(4) NOT NULL DEFAULT '1' ULASAN 'Jenis klasifikasi (kini dua: 1: aplikasi, 2: permainan)',
  `nama` varchar(50) BUKAN NULL ULASAN 'Nama kategori',
  KUNCI UTAMA (`cat_id`)
) ENJIN=CHARSET LALAI MyISAM=utf8 KOMEN='Jadual klasifikasi aplikasi';

BUAT JADUAL `lmx_apps` (
  `id` int(11) NOT NULL AUTO_INCREMENT ULASAN 'nombor apl',
  `cat_id` int(11) NOT NULL DEFAULT '0' ULASAN 'Nombor kategori',
  `nama` varchar(100) BUKAN NULL ULASAN 'nama aplikasi',
  `year` char(5) NOT NULL DEFAULT '0' ULASAN 'Year',
  `down_count` bigint(20) NOT NULL DEFAULT '0' ULASAN 'Muat turun',
  `hit_count` bigint(20) LALAI '0' ULASAN 'volume carian',
  KUNCI UTAMA (`id`),
) ENJIN=InnoDB AUTO_INCREMENT=1 CARSET LALAI=utf8;


Saya kini telah mencipta dua indeks bersama:

< /p>

Tetapi terdapat beberapa masalah dengan kedua-dua indeks ini Jika saya mengklik Cari Semua, pengisihan tidak akan diindeks. Bagaimana untuk menyelesaikan masalah ini untuk memilih semua tanpa pengindeksan apabila mencari kategori. petikan blok >

Sql untuk pengindeksan adalah seperti berikut:

-- JELASKAN PILIH a.id,a.cat_id,a.`name`,a.down_count,b.`name` DARIPADA `lmx_apps` a SERTAI DALAM `lmx_app_category` `b` HIDUP `a`.`cat_id`=`b`.`id` DI MANA a.cat_id = 103 PESANAN OLEH a.down_count DESC HAD 10,20

Sql tanpa pengindeksan adalah seperti berikut

 PILIH a.id,a.cat_id,a.`name`,a.down_count,b.`name` DARIPADA `lmx_apps` a

 SERTAI DALAM `lmx_app_category` `b`
 
 HIDUP `a`.`cat_id`=`b`.`id`

  -- DI MANA
  -- a.cat_id IN (PILIH cat_id DARI lmx_app_category WHERE orgame = 1)
  -- Apabila tiada syarat cat_id atau keadaan dalam

 PESANAN OLEH a.down_count DESC
    
 HAD 10,20
某草草
某草草

membalas semua(1)
曾经蜡笔没有小新

Sekarang saya memikirkan rancangan lain, iaitu

Padam medan cat_id pada jadual aplikasi dan indeks yang dibuat oleh cat_id

Buat jadual perhubungan antara jadual klasifikasi (lmx_app_category) dan jadual aplikasi (lmx_apps),

Medan ialah id, app_id, cat_id

Buat indeks pada jadual berkaitan ini Saya tidak tahu rupa penyelesaian ini

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan