Jadual Kandungan
Tidak biasa digunakan
Rumah pangkalan data tutorial mysql apakah petunjuk mysql

apakah petunjuk mysql

Jun 27, 2022 pm 02:12 PM
mysql

Dalam mysql, pembayang merujuk kepada "petunjuk pengoptimuman pertanyaan", yang akan menggesa pengoptimum untuk menjana pelan pelaksanaan untuk pengoptimuman dengan cara tertentu, menjadikan pernyataan SQL pengguna lebih fleksibel berdasarkan jadual Peraturan seperti susunan sambungan, kaedah, laluan akses dan selari mempunyai kesan pada pernyataan DML (Bahasa Manipulasi Data).

apakah petunjuk mysql

Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.

Kami boleh menambah ulasan semasa mengendalikan jadual, medan atau indeks untuk meningkatkan kebolehbacaan kod supaya orang lain dapat memahami kod dengan cepat Ini adalah petua untuk orang yang menggunakan pangkalan data yang sama, terdapat satu lagi Petua dipanggil petunjuk, adalah petunjuk kepada pangkalan data.

Apakah pembayang

petunjuk merujuk kepada "petunjuk pengoptimuman pertanyaan", yang akan menggesa pengoptimum untuk mengoptimumkan dengan cara tertentu, membolehkan anda kepada Pernyataan SQL adalah lebih fleksibel, yang akan menjadikan pertanyaan anda lebih cepat, sudah tentu, ia juga mungkin lebih perlahan, semuanya bergantung pada pemahaman anda tentang pengoptimum dan pemahaman anda tentang senario.

Kami tahu bahawa apabila melaksanakan pernyataan SQL, MySQL akan menjana pelan pelaksanaan dan pembayang memberitahu pengoptimum pertanyaan untuk menjana pelan pelaksanaan mengikut cara kami memberitahunya.

Petunjuk boleh bertindak pada pernyataan DML (Bahasa Manipulasi Data) berdasarkan susunan sambungan jadual, kaedah, laluan akses, selari dan peraturan lain adalah seperti berikut:

使用的优化器类型;
基于代价的优化器的优化目标,是all_rows还是first_rows;
表的访问路径,是全表扫描,还是索引扫描,还是直接用rowid;
表之间的连接类型;
表之间的连接顺序;
语句的并行程度;
Salin selepas log masuk

Petua biasa

  • Force index FORCE INDEKS
    SELECT * FROM tbl FORCE INDEX (FIELD1) …

  • Abaikan indeks ABAIKAN INDEX
    SELECT * FROM tbl IGNORE INDEX (FIELD1, FIELD2) …

  • Matikan penimbal pertanyaan SQL_NO_CACHE
    SELECT SQL_NO_CACHE field1, field2 FROM tbl;
    Apabila anda perlu menanyakan data masa nyata dan kekerapan tidak tinggi, anda boleh mempertimbangkan untuk menggunakan buffer Off, iaitu MySQL tidak akan mencari dalam buffer tanpa mengira sama ada SQL ini telah dilaksanakan.

  • Paksa query caching SQL_CACHE
    SELECT SQL_CACHE * FROM tbl;
    Fungsi ini adalah bertentangan dengan yang sebelumnya, tetapi ia hanya berfungsi apabila query_cache_type dalam my.ini ditetapkan kepada 2.

  • Keutamaan operasi HIGH_PRIORITY
    HIGH_PRIORITY boleh digunakan dalam memilih dan memasukkan operasi untuk memberitahu MYSQL bahawa operasi ini diutamakan.
    SELECT HIGH_PRIORITY * FROM tbl;

  • Kendalian Lagging LOW_PRIORITY
    LOW_PRIORITY boleh digunakan dalam operasi sisipan dan kemas kini untuk memberitahu mysql bahawa operasi ini ketinggalan.
    update LOW_PRIORITY tbl set field1= where field1= …

  • Sisipan tertunda INSERT DELAYED
    INSERT DELAYED INTO tbl set field1= …
    bermakna pelanggan menghantar permintaan sisipan data dan MySQL mengembalikan status OK tetapi sebenarnya tidak laksanakannya Sebaliknya, ia disimpan dalam memori dan beratur, dan kemudian dimasukkan apabila mysql mempunyai ruang.
    Faedah penting ialah permintaan sisipan daripada berbilang pelanggan dikumpulkan bersama dan ditulis ke dalam satu blok, yang jauh lebih pantas daripada melakukan banyak sisipan secara bebas.
    Kelemahannya ialah ID yang ditambah secara automatik tidak dapat dikembalikan, dan apabila sistem ranap, data yang belum sempat dimasukkan MySQL akan hilang.

  • Pesanan sambungan paksa STRAIGHT_JOIN
    SELECT tbl.FIELD1, tbl2.FIELD2 FROM tbl STRAIGHT_JOIN tbl2 WHERE …
    Seperti yang dapat dilihat daripada pernyataan SQL di atas, STRAIGHT_JOIN digunakan untuk memaksa MySQL menyambungkan jadual dalam susunan tbl dan tbl2. Jika anda fikir ia adalah lebih cekap untuk menyambung dalam pesanan anda sendiri daripada pesanan yang disyorkan oleh MySQL, anda boleh menggunakan STRAIGHT_JOIN untuk menentukan susunan sambungan.

Tidak biasa digunakan

  • Memaksa penggunaan jadual sementara SQL_BUFFER_RESULT
    SELECT SQL_BUFFER_RESULT * FROM tbl WHERE …
    Apabila terdapat banyak data dalam set hasil pertanyaan kami, anda boleh memaksa set keputusan ke dalam jadual sementara melalui pilihan SQL_BUFFER_RESULT, supaya kunci jadual MySQL boleh dikeluarkan dengan cepat (supaya pernyataan SQL lain boleh menanyakan rekod ini), dan ia boleh berkhidmat. pelanggan untuk masa yang lama. Pelanggan menyediakan set rekod yang besar.

  • Pengelompokan menggunakan jadual sementara SQL_BIG_RESULT dan SQL_SMALL_RESULT
    SELECT SQL_BUFFER_RESULT FIELD1, COUNT(*) FROM tbl GROUP BY FIELD1;
    adalah sah untuk penyataan SELECT dan memberitahu MySQL untuk mengoptimumkan cara menggunakan jadual sementara untuk mengisih pertanyaan GROUP BY dan DISTINCT , SQL_SMALL_RESULT Ini bermakna set hasil adalah sangat kecil dan boleh diisih terus dalam jadual sementara dalam ingatan jika tidak, jika ia sangat besar, ia perlu diisih menggunakan jadual sementara pada cakera.

  • SQL_CALC_FOUND_ROWS
    Ia sebenarnya bukan gesaan pengoptimum, dan ia juga tidak menjejaskan rancangan pelaksanaan pengoptimum, tetapi ia akan menyebabkan set hasil dikembalikan oleh mysql untuk memasukkan jumlah bilangan baris yang terjejas oleh ini operasi, yang perlu dipadankan dengan FOUND_ROWS() Penggunaan gabungan.
    SQL_CALC_FOUND_ROWS Memberitahu MySQL untuk merekodkan bilangan baris yang diproses kali ini; FOUND_ROWS() digunakan untuk mendapatkan semula bilangan baris yang direkodkan, yang boleh digunakan pada senario halaman.
    Cara umum untuk menulis halaman adalah: mula-mula semak jumlah nombor, kira bilangan halaman, dan kemudian semak butiran halaman tertentu.
    SELECT COUNT(*) from tbl WHERE …
    SELECT * FROM tbl WHERE … limit m,n
    Tetapi dengan bantuan SQL_CALC_FOUND_ROWS, ia boleh dipermudahkan kepada tulisan berikut:
    SELECT SQL_CALC_FOUND_ROWS * FROM tbl WHERE … limit m,n;
    SELECT FOUND_ROWS();
    Yang kedua SELECT akan kembali SELECT pertama ialah jumlah bilangan baris tanpa had, jadi anda hanya perlu melaksanakan pertanyaan yang memakan masa dan kompleks untuk mendapatkan jumlah baris pada masa yang sama.

  • KUNCI DALAM MOD KONGSI, UNTUK KEMASKINI
    Begitu juga, kedua-dua ini bukan petua pengoptimuman yang mengawal penyataan SELECT. Ia hanya sah untuk peringkat baris kunci, yang disokong oleh InnoDB.

Meluaskan pengetahuan:

Konsep dan perbezaan

SELECT ... LOCK IN SHARE MODE Apa yang ditambah ialah kunci IS (kunci kongsi niat), iaitu kunci dikongsi ditambahkan pada semua baris yang layak Sesi lain boleh membaca rekod dan terus menambah kunci IS, tetapi ia tidak boleh diubah suai sehingga sesi terkunci selesai . (Jika tidak, masa tunggu kunci langsung tamat).

SELECT ... FOR UPDATE Apa yang ditambahkan ialah kunci IX (kunci eksklusif niat), iaitu, eksklusif ditambahkan pada baris yang memenuhi syarat Sesi lain tidak boleh menambah sebarang kunci S atau kunci X pada rekod ini. Jika tiada bacaan tanpa kunci yang konsisten, sesi lain tidak boleh membaca dan mengubah suai rekod ini, tetapi innodb mempunyai bacaan tidak mengunci (bacaan syot kilat tidak memerlukan penguncian).
Oleh itu, kaedah penguncian for update hanya menyekat kaedah pertanyaan lock in share mode lebih daripada kaedah select...lock in share mode dan tidak menyekat bacaan syot kilat.

Senario Aplikasi

LOCK IN SHARE MODE terpakai pada senario penulisan dua jadual dengan hubungan Mengambil contoh rasmi MySQL, satu jadual ialah jadual anak, dan yang satu lagi ialah jadual anak. Ia adalah jadual induk. Andaikan lajur tertentu child_id jadual anak dipetakan ke lajur c_child_id jadual induk, adalah berisiko untuk memasukkan rekod child_id =100 ke dalam jadual anak pada masa ini, kerana jadual induk mungkin dilaksanakan pada masa yang sama dengan sisipan Untuk memadamkan rekod dengan c_child_id=100, terdapat risiko ketidakkonsistenan data perniagaan. Kaedah yang betul ialah melaksanakan select * from parent where c_child_id=100 lock in share mode dahulu, kunci rekod ini dalam jadual induk, dan kemudian laksanakan insert into child(child_id) values (100).

[Cadangan berkaitan: tutorial video mysql]

Atas ialah kandungan terperinci apakah petunjuk mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kunci utama MySQL boleh menjadi batal Kunci utama MySQL boleh menjadi batal Apr 08, 2025 pm 03:03 PM

Kunci utama MySQL tidak boleh kosong kerana kunci utama adalah atribut utama yang secara unik mengenal pasti setiap baris dalam pangkalan data. Jika kunci utama boleh kosong, rekod tidak dapat dikenal pasti secara unik, yang akan membawa kepada kekeliruan data. Apabila menggunakan lajur integer sendiri atau UUIDs sebagai kunci utama, anda harus mempertimbangkan faktor-faktor seperti kecekapan dan penghunian ruang dan memilih penyelesaian yang sesuai.

Bolehkah mysql kembali json Bolehkah mysql kembali json Apr 08, 2025 pm 03:09 PM

MySQL boleh mengembalikan data JSON. Fungsi JSON_EXTRACT mengekstrak nilai medan. Untuk pertanyaan yang kompleks, pertimbangkan untuk menggunakan klausa WHERE untuk menapis data JSON, tetapi perhatikan kesan prestasinya. Sokongan MySQL untuk JSON sentiasa meningkat, dan disyorkan untuk memberi perhatian kepada versi dan ciri terkini.

Bolehkah mysql berjalan di Android Bolehkah mysql berjalan di Android Apr 08, 2025 pm 05:03 PM

MySQL tidak boleh berjalan secara langsung di Android, tetapi ia boleh dilaksanakan secara tidak langsung dengan menggunakan kaedah berikut: menggunakan pangkalan data ringan SQLite, yang dibina di atas sistem Android, tidak memerlukan pelayan yang berasingan, dan mempunyai penggunaan sumber kecil, yang sangat sesuai untuk aplikasi peranti mudah alih. Sambungkan jauh ke pelayan MySQL dan sambungkan ke pangkalan data MySQL pada pelayan jauh melalui rangkaian untuk membaca dan menulis data, tetapi terdapat kelemahan seperti kebergantungan rangkaian yang kuat, isu keselamatan dan kos pelayan.

Pengoptimuman pertanyaan di MySQL adalah penting untuk meningkatkan prestasi pangkalan data, terutama ketika berurusan dengan set data yang besar Pengoptimuman pertanyaan di MySQL adalah penting untuk meningkatkan prestasi pangkalan data, terutama ketika berurusan dengan set data yang besar Apr 08, 2025 pm 07:12 PM

1. Gunakan indeks yang betul untuk mempercepatkan pengambilan data dengan mengurangkan jumlah data yang diimbas memilih*frommployeesWherElast_name = 'Smith'; Jika anda melihat lajur jadual beberapa kali, buat indeks untuk lajur tersebut. Jika anda atau aplikasi anda memerlukan data dari pelbagai lajur mengikut kriteria, buat indeks komposit 2. Elakkan pilih * Hanya lajur yang diperlukan, jika anda memilih semua lajur yang tidak diingini, ini hanya akan memakan lebih banyak pelayan dan menyebabkan pelayan melambatkan pada masa yang tinggi atau kekerapan misalnya, jadual anda

Bolehkah mysql mengendalikan pelbagai sambungan Bolehkah mysql mengendalikan pelbagai sambungan Apr 08, 2025 pm 03:51 PM

MySQL boleh mengendalikan pelbagai sambungan serentak dan menggunakan multi-threading/multi-pemprosesan untuk menetapkan persekitaran pelaksanaan bebas kepada setiap permintaan pelanggan untuk memastikan bahawa mereka tidak terganggu. Walau bagaimanapun, bilangan sambungan serentak dipengaruhi oleh sumber sistem, konfigurasi MySQL, prestasi pertanyaan, enjin penyimpanan dan persekitaran rangkaian. Pengoptimuman memerlukan pertimbangan banyak faktor seperti tahap kod (menulis SQL yang cekap), tahap konfigurasi (menyesuaikan max_connections), tahap perkakasan (meningkatkan konfigurasi pelayan).

Adakah Mysql perlu membayar Adakah Mysql perlu membayar Apr 08, 2025 pm 05:36 PM

MySQL mempunyai versi komuniti percuma dan versi perusahaan berbayar. Versi komuniti boleh digunakan dan diubahsuai secara percuma, tetapi sokongannya terhad dan sesuai untuk aplikasi dengan keperluan kestabilan yang rendah dan keupayaan teknikal yang kuat. Edisi Enterprise menyediakan sokongan komersil yang komprehensif untuk aplikasi yang memerlukan pangkalan data yang stabil, boleh dipercayai, berprestasi tinggi dan bersedia membayar sokongan. Faktor yang dipertimbangkan apabila memilih versi termasuk kritikal aplikasi, belanjawan, dan kemahiran teknikal. Tidak ada pilihan yang sempurna, hanya pilihan yang paling sesuai, dan anda perlu memilih dengan teliti mengikut keadaan tertentu.

Bagaimana untuk mengoptimumkan prestasi MySQL untuk aplikasi beban tinggi? Bagaimana untuk mengoptimumkan prestasi MySQL untuk aplikasi beban tinggi? Apr 08, 2025 pm 06:03 PM

Panduan Pengoptimuman Prestasi Pangkalan Data MySQL Dalam aplikasi yang berintensifkan sumber, pangkalan data MySQL memainkan peranan penting dan bertanggungjawab untuk menguruskan urus niaga besar-besaran. Walau bagaimanapun, apabila skala aplikasi berkembang, kemunculan prestasi pangkalan data sering menjadi kekangan. Artikel ini akan meneroka satu siri strategi pengoptimuman prestasi MySQL yang berkesan untuk memastikan aplikasi anda tetap cekap dan responsif di bawah beban tinggi. Kami akan menggabungkan kes-kes sebenar untuk menerangkan teknologi utama yang mendalam seperti pengindeksan, pengoptimuman pertanyaan, reka bentuk pangkalan data dan caching. 1. Reka bentuk seni bina pangkalan data dan seni bina pangkalan data yang dioptimumkan adalah asas pengoptimuman prestasi MySQL. Berikut adalah beberapa prinsip teras: Memilih jenis data yang betul dan memilih jenis data terkecil yang memenuhi keperluan bukan sahaja dapat menjimatkan ruang penyimpanan, tetapi juga meningkatkan kelajuan pemprosesan data.

Tidak dapat log masuk ke mysql sebagai akar Tidak dapat log masuk ke mysql sebagai akar Apr 08, 2025 pm 04:54 PM

Sebab utama mengapa anda tidak boleh log masuk ke MySQL sebagai akar adalah masalah kebenaran, ralat fail konfigurasi, kata laluan tidak konsisten, masalah fail soket, atau pemintasan firewall. Penyelesaiannya termasuk: periksa sama ada parameter pengikat di dalam fail konfigurasi dikonfigurasi dengan betul. Semak sama ada kebenaran pengguna root telah diubahsuai atau dipadam dan ditetapkan semula. Sahkan bahawa kata laluan adalah tepat, termasuk kes dan aksara khas. Semak tetapan dan laluan kebenaran fail soket. Semak bahawa firewall menyekat sambungan ke pelayan MySQL.

See all articles