explain select * from ecs_ad where ad_id =1 or ad_id = 3;
+----+-------------+--------+-------+---------------+---------+---------+------+------+-----------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+-------+---------------+---------+---------+------+------+-----------------------+
| 1 | SIMPLE | ecs_ad | range | PRIMARY | PRIMARY | 2 | NULL | 2 | Using index condition |
+----+-------------+--------+-------+---------------+---------+---------+------+------+-----------------------+
1 row in set
Ini adalah kesatuan semua
explain select * from ecs_ad where ad_id = 4 union all select * from ecs_ad where ad_id = 3;
+------+--------------+------------+-------+---------------+---------+---------+-------+------+-----------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+--------------+------------+-------+---------------+---------+---------+-------+------+-----------------+
| 1 | PRIMARY | ecs_ad | const | PRIMARY | PRIMARY | 2 | const | 1 | NULL |
| 2 | UNION | ecs_ad | const | PRIMARY | PRIMARY | 2 | const | 1 | NULL |
| NULL | UNION RESULT | <union1,2> | ALL | NULL | NULL | NULL | NULL | NULL | Using temporary |
+------+--------------+------------+-------+---------------+---------+---------+-------+------+-----------------+
3 rows in set
Pertama sekali, jurang prestasi antara dua pertanyaan ini seharusnya tidak besar.
Kerana lajur ad_id adalah kunci utama.
Mengikut analisis lajur taip:jenis: julat
atau pertanyaan,
type:range
union all 查询:
type:const / const / ALL
首先可以确认的是,
const
要优于range
.const
也是因为 ad_id 为主键.但是 union all 做了三次操作,两次主键或者唯一索引查询 type:const,但最后组合到一起时 type:ALL
type:ALL 本身性能比 range 还要差
从 Type 看,or 查询性能应该更好.
Extra 分析
or 查询:
Using index condition
union all 查询:
NULL / NULL / Using temporary
union semua pertanyaan:type: const / const / SEMUA
Perkara pertama yang boleh disahkan ialah
const
lebih baik daripadarange
.const
juga kerana ad_id ialah kunci utama.#🎜 🎜#Tetapi kesatuan semua melakukan tiga operasi, dua kunci utama atau pertanyaan indeks unik jenis:const, tetapi apabila akhirnya digabungkan bersama taip:SEMUA
jenis:SEMUA sendiri mempunyai prestasi yang lebih teruk daripada julat union semua pertanyaan:Aliran pemprosesan apabila terdapat keadaan indeks tolak:
1) Enjin storan membaca tuple indeks seterusnya daripada indeks.
3) Jika syarat indeks tolak ke bawah dipenuhi, enjin storan mencari baris jadual asas melalui tuple indeks dan membaca keseluruhan baris data dan mengembalikannya ke lapisan pelayan. 4) Penilaian lapisan pelayan tidak ditolak ke keadaan di mana lapisan enjin storan Jika baris data memenuhi syarat di mana, ia akan digunakan, jika tidak, ia akan dibuang.
#🎜🎜#Ringkasnya, apabila tiada ICP, enjin storan mengembalikan semua baris data yang memenuhi syarat, dan melakukan penapisan keadaan di lapisan perkhidmatan. #🎜🎜#Apabila ada ICP, keadaan di mana ditolak ke lapisan enjin storan, dan enjin storan terus mengembalikan data yang memenuhi syarat. #🎜🎜#Prestasi secara semula jadi akan bertambah baik. #🎜🎜# #🎜🎜#Untuk pengenalan berkaitan ICP, anda boleh semak di sini#🎜🎜# #🎜🎜#Menggunakan sementara mewakili jadual sementara tersirat, yang bermaksud bahawa MySQL akan menjana jadual sementara untuk menyimpan data perantaraan. Kerana kesatuan semua adalah hubungan di mana mereka diproses secara berasingan dan digabungkan pada akhirnya. #🎜🎜#Dari Extra, ia juga sepatutnya atau prestasi pertanyaan lebih tinggi. #🎜🎜# #🎜🎜##🎜🎜# Diambil bersama: prestasi pertanyaan OR harus lebih baik daripada UNION ALL.#🎜🎜##🎜🎜#Memandangkan prestasi semua pertanyaan berubah apabila jumlah data meningkat, analisis di atas hanya berdasarkan hasil analisis Terangkan yang disiarkan oleh subjek. Ini bukan untuk mengatakan bahawa OR lebih baik daripada UNION ALL dalam semua situasi.
Di atas adalah pendapat peribadi, mohon betulkan jika ada kesilapan.
Tiada perbezaan antara dua ayat ini.
Secara amnya, ATAU menghubungkan dua medan yang berbeza Apabila indeks tidak boleh digunakan, prestasinya akan menjadi kurang baik seperti kesatuan.