Mengenai isu kecekapan pertanyaan indeks Mysql
世界只因有你
世界只因有你 2017-06-22 11:54:39
0
4
1092
SELECT COUNT(*) FROM `set_gif` WHERE `zhuanid` = 0 AND `webid` IN ('0','2','21','22','27','11','31') AND `empty` = 0 LIMIT 1 [ RunTime:0.1423s ]
SELECT `id`,`webid`,`catid`,`path`,`pname`,`pathall`,`title`,`cdn`,`sort`,`likecount`,`fsize`,`time`,`viewcount`,`likecount` FROM `set_gif` WHERE `zhuanid` = 0 AND `webid` IN ('0','2','21','22','27','11','31') AND `empty` = 0 ORDER BY time desc,id desc LIMIT 0,10 [ RunTime:0.0045s ]

Dua pernyataan sql, masa jalan yang terakhir bermaksud masa pelaksanaan, volum data ialah 150W

Penerangan medan zhuanid ialah nilai berangka, webid ialah nilai berangka, kosong ialah 0 atau 1

Indeks biasa yang digunakan oleh SQL dalam ayat pertama ialah satu set indeks untuk zhuanid webid kosong
Indeks yang digunakan oleh SQL dalam ayat kedua ialah satu set indeks oleh zhuanid webid kosong

Mengapa kiraan dalam ayat pertama mengambil masa yang lama jika dibandingkan dengan pertanyaan kompleks dalam ayat kedua, ia mengambil masa yang sangat singkat

世界只因有你
世界只因有你

membalas semua(4)
ringa_lee

Ayat pertama ialah sql, had 1
Ayat kedua ialah sql, had 0, 10
Anda meminta kira untuk mengira 1.5 juta item.... Adakah anda ingin lebih cepat daripada menyemak 10 item pertama?

洪涛

Tekaan saya: Medan indeks tidak ditetapkan sebagai tidak boleh dibatalkan, menyebabkan count(*) tidak menggunakan indeks.

Selain itu, kedua-dua kenyataan ini sendiri tidak setara

曾经蜡笔没有小新

Anda perlu melihat pelan pelaksanaan anda Jika set keputusan SQL pertama adalah sangat besar, anda perlu mengimbas semua rekod yang memenuhi syarat ini, SQL kedua menggunakan indeks id masa dan hanya perlu cari 10 rekod yang memenuhi syarat itu sahaja, jadi ia akan menjadi lebih cepat Selain itu, indeks gabungan zhuanid webid kosong hanya akan menggunakan lajur zhuanid dan bahagian julat webid

为情所困

Selepas SQL pertama dilaksanakan, hasilnya disimpan dalam Cache.

Pelaksanaan SQL kedua bergantung pada Cache SQL pertama, jadi ia akan menjadi lebih pantas (sebenarnya, SQL kedua menggunakan pengisihan, jadi ia sepatutnya lebih perlahan).

Poster boleh melaksanakannya selepas SQL pertama dilaksanakan

RESET QUERY CACHE;

Set semula Cache dan kemudian laksanakan SQL kedua, hasilnya berbeza.

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