Rumah  >  Artikel  >  pangkalan data  >  Apakah yang perlu anda perhatikan apabila menggunakan pertanyaan berkaitan dalam mysql?

Apakah yang perlu anda perhatikan apabila menggunakan pertanyaan berkaitan dalam mysql?

PHPz
PHPzke hadapan
2023-05-28 15:17:301022semak imbas

1 Pastikan terdapat indeks pada lajur dalam klausa ON dan USING.

Tertib persatuan mesti dipertimbangkan semasa membuat indeks. Apabila jadual A dan jadual B dikaitkan menggunakan lajur c, jika susunan persatuan pengoptimum ialah A, B, maka tidak perlu membuat indeks pada lajur sepadan jadual A. Indeks yang tidak digunakan akan membawa beban tambahan Secara umumnya, melainkan terdapat sebab lain, anda hanya perlu membuat indeks pada lajur yang sepadan pada jadual kedua dalam jujukan persatuan.

2 Pastikan sebarang ungkapan dalam GROUP BY dan ORDER BY hanya melibatkan lajur dalam satu jadual, supaya MySQL boleh menggunakan indeks untuk pengoptimuman.

Contoh

Dengan mengandaikan bahawa MySQL melaksanakan operasi persatuan mengikut susunan persatuan A dan B dalam pertanyaan, maka kod pseudo berikut boleh digunakan untuk nyatakan cara MySQL melengkapkan Siasatan ini:

outer_iterator = SELECT A.xx,A.c FROM A WHERE A.xx IN (5,6);
 
outer_row = outer_iterator.next;
 
while(outer_row) {
 
    inner_iterator = SELECT B.yy FROM B WHERE B.c = outer_row.c;
 
    inner_row = inner_iterator.next;
 
    while(inner_row) {
 
        output[inner_row.yy,outer_row.xx];
 
        inner_row = inner_iterator.next;
 
    }
 
    outer_row = outer_iterator.next;
 
}  可以看到,最外层的查询是根据A.xx列来查询的,A.c上如果有索引的话,整个关联查询也不会使用。再看内层的查询,很明显B.c上如果有索引的话,能够加速查询,因此只需要在关联顺序中的第二张表的相应列上创建索引即可。

Atas ialah kandungan terperinci Apakah yang perlu anda perhatikan apabila menggunakan pertanyaan berkaitan dalam mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam