Jadual Kandungan
Tambah indeks " >Tambah indeks
Optimumkan struktur medan jadual" >Optimumkan struktur medan jadual
Rumah pangkalan data tutorial mysql Ringkaskan operasi paling asas pengoptimuman MySQL

Ringkaskan operasi paling asas pengoptimuman MySQL

Nov 15, 2021 pm 03:47 PM
mysql pengoptimuman

Idea pengoptimuman

Langkah pengoptimuman MySQL terperinci adalah seperti berikut:

  • Periksa struktur jadual data dan perbaiki reka bentuk yang tidak sempurna
  • Jalankan perniagaan utama dan kumpulkan SQL pertanyaan pangkalan data yang biasa digunakan
  • Analisis SQL pertanyaan, bahagikannya dengan sewajarnya, tambah indeks, dsb. untuk mengoptimumkan pertanyaan
  • Semasa mengoptimumkan SQL, mengoptimumkan logik kod
  • Tambah cache setempat dan cache redis

Jangan gunakan nilai NULL ​​jika boleh

Kerana semasa membuat jadual, jika anda tidak menetapkan nilai lalai untuk nilai yang dicipta, MySQL Tetapan lalai ialah NULL. Jadi mengapa tidak baik untuk menggunakan NULL?

  • NULL menjadikan penyelenggaraan indeks lebih rumit adalah amat disyorkan untuk menetapkan pertanyaan bersyarat negatif seperti NOT NULL
  • NOT IN dan != pada lajur indeks apabila. terdapat NULL Dalam kes nilai, hasilnya sentiasa kosong dan pertanyaan adalah terdedah kepada ralat Lajur
  • NULL memerlukan bait tambahan sebagai bendera untuk menentukan sama ada ia adalah <.>. NULL
  • Apabila menggunakan
  • dan Nilai lain dalam lajur mungkin bukan jenis yang sama, menyebabkan masalah. (Berprestasi berbeza dalam bahasa yang berbeza) NULL
  • MySQL mengalami kesukaran mengoptimumkan pertanyaan untuk lajur yang boleh
  • NULL
Jadi untuk medan yang malas sebelum ini, tetapkan Nilai lalai secara manual, rentetan kosong, isikan dengan 0.

Walaupun kaedah ini tidak banyak meningkatkan prestasi MySQL, ia adalah tabiat yang baik, dan adalah penting untuk tidak mengabaikan butiran ini.

Untuk medan yang kerap ditanya, sila tambah indeks Kelajuan pertanyaan dengan dan tanpa indeks berbeza sebanyak sepuluh kali atau lebih.

    Secara umumnya, setiap jadual perlu mempunyai kunci utama
  • medan id
  • Medan yang biasa digunakan untuk pertanyaan hendaklah diindeks
  • taip Medan, apabila membina indeks, sebaiknya tentukan panjang varchar
  • Apabila pertanyaan mempunyai berbilang syarat, syarat dengan indeks lebih disukai
  • Carian kabur seperti
  • syarat untuk indeks medan adalah Tidak sah, indeks kata kunci lain perlu diwujudkan untuk menyelesaikannya LIKE
  • Sila cuba untuk tidak mengekang hubungan antara jadual dan jadual di peringkat pangkalan data Kebergantungan antara jadual ini harus diselesaikan pada peringkat kod
Apabila terdapat kekangan antara jadual, walaupun pernyataan SQL untuk penambahan, pemadaman dan pertanyaan menjadi lebih mudah, kesan negatifnya ialah pangkalan data akan menyemak kekangan untuk operasi seperti sisipan (walaupun ia boleh ditetapkan secara manual untuk mengabaikan Kekangan), yang setara dengan menulis beberapa logik perniagaan ke lapisan pangkalan data, yang menyusahkan untuk dikekalkan.

Jangan gunakan jenis rentetan untuk data dalam pangkalan data yang boleh diwakili oleh integer sama ada hendak menggunakan

atau varchar bergantung pada Nilai yang mungkin untuk medan. char

Pengoptimuman jenis ini selalunya tidak dapat dilaksanakan apabila terdapat sejumlah besar data dalam pangkalan data Adalah lebih baik untuk mereka bentuknya sebelum reka bentuk pangkalan data.

    Untuk lajur dengan kemungkinan nilai yang sangat terhad, gunakan
  • dan bukannya tinyint, VARCHAR
      Contohnya, untuk merakam platform peranti mudah alih, hanya terdapat dua nilai: android , ios, kemudian Anda boleh menggunakan 0 untuk mewakili android dan 1 untuk mewakili ios Jenis lajur ini mesti diulas
    • Mengapa tidak menggunakan
    • ? ENUM sukar untuk dikembangkan Contohnya, platform mudah alih kemudiannya menambahkan ENUM, yang akan mengelirukan, tetapi menambah 2 kepada ipad sudah memadai dan tinyint sangat pelik untuk dikendalikan dalam kod. , kerana ia dianggap sebagai pembedahan plastik Atau rentetan, setiap bahasa adalah berbeza. ENUM
    • Dengan cara ini, makna setiap nilai mesti ditulis dalam komen atau kod pangkalan data
  • Untuk rentetan panjang tetap tersebut, anda boleh menggunakan
  • , seperti Poskod, sentiasa 5 digit char
  • Untuk rentetan yang tidak diketahui panjangnya, gunakan
  • varchar
  • Jangan salah guna
  • , seperti jadual bigint medan yang merekodkan nombor daripada artikel, gunakan idItu sahaja, had atas 2.1 bilion artikel sudah memadaiint
  • Pecahkan paradigma pangkalan data dengan sewajarnya dan tambah medan berlebihan untuk mengelakkan sambungan jadual semasa pertanyaan
Apabila bertanya, pastikan anda menggunakan jenis

Ia lebih pantas daripada int, kerana perbandingan integer boleh dicapai dengan memanggil terus operator pendasar, manakala perbandingan rentetan perlu dibandingkan dengan aksara demi aksara. varchar

Pertanyaan data panjang tetap adalah lebih pantas daripada pertanyaan data panjang berubah, kerana pengimbangan antara data panjang tetap dan data ditetapkan dan mudah untuk mengira pengimbangan data seterusnya. Untuk data panjang berubah-ubah, satu langkah lagi diperlukan untuk menanyakan offset data seterusnya. tetapi. Data panjang tetap mungkin membazir lebih banyak ruang storan.

Pisah jadual besar

Bagi jadual yang volum datanya mungkin melebihi 5 juta dalam masa terdekat atau berkembang pesat, pastikan anda melakukan pemisahan jadual menegak atau mendatar terlebih dahulu data Selepas volum melebihi satu juta, kelajuan pertanyaan akan menurun dengan ketara.

Cuba untuk memuktamadkan pelan untuk sub-pangkalan data dan sub-jadual pada peringkat awal reka bentuk pangkalan data, jika tidak, ia akan meningkatkan kerumitan kod dengan ketara dan sukar untuk diubah kemudian.

Pembahagian jadual menegak adalah berdasarkan pembolehubah luaran seperti tarikh, dan pembahagian jadual mendatar adalah berdasarkan perhubungan medan tertentu dalam jadual, menggunakan pemetaan cincang untuk membahagikan jadual kepada bahagian yang sama.

Prasyarat untuk sub-pangkalan data dan sub-pangkalan data jadual ialah sebelum melaksanakan pernyataan pertanyaan, anda sudah mengetahui sub-pangkalan data dan sub-jadual yang mana data yang hendak disoal mungkin termasuk.

Mengoptimumkan pernyataan pertanyaan

Ini adalah pemula kepada banyak kesesakan pangkalan data sistem.

  • Sila cuba gunakan pertanyaan mudah dan elakkan menggunakan pautan jadual
  • Sila cuba elakkan imbasan jadual penuh Pernyataan yang akan menyebabkan imbasan jadual penuh termasuk tetapi tidak terhad kepada:
    • Keadaan klausa di mana sentiasa benar atau kosong
    • Gunakan LIKE
    • Gunakan operator ketaksamaan (<>, !=)
    • Pertanyaan mengandungi is null Apabila menggunakan lajur
    • pada lajur bukan indeks or
  • apabila membuat pertanyaan dengan berbilang syarat, sila letakkan syarat pertanyaan mudah atau pertanyaan lajur indeks di hadapan
  • Sila cuba nyatakan lajur yang perlu ditanya, jangan malas menggunakan pilih *
    • Jika anda tidak nyatakan, di satu pihak, data berlebihan akan dikembalikan, menduduki lebar jalur , dsb.
    • Sebaliknya, MySQL melaksanakan pertanyaan Apabila tiada medan, ia akan menanyai medan dalam struktur jadual dahulu
  • Kata kunci pertanyaan huruf besar ialah lebih pantas sedikit daripada huruf kecil
  • Menggunakan subkueri akan membuat jadual sementara akan menjadi lebih perlahan daripada JOIN dan UNION
  • Cuba untuk tidak menggunakan fungsi pangkalan data apabila membuat pertanyaan pada medan indeks, kerana ia menyusahkan. untuk cache hasil pertanyaan
  • Apabila anda hanya memerlukan satu baris data, sila gunakan LIMIT 1. Jika terdapat terlalu banyak data, sila tetapkan LIMIT dengan sewajarnya Untuk pertanyaan paging
  • jangan sekali-kali ORDER BY RAND(. ), prestasinya sangat rendah

Tambah cache

Menggunakan cache seperti redis dan cache fail setempat boleh mengurangkan bilangan pertanyaan pangkalan data. Apabila bercakap tentang caching, anda mesti menganalisis ciri data sistem anda sendiri dan membuat pilihan yang sesuai.

  • Untuk beberapa data yang biasa digunakan, seperti maklumat konfigurasi, dsb., ia boleh diletakkan dalam cache
  • Struktur jadual pangkalan data boleh dicache secara setempat
  • Data cache mesti Beri perhatian kepada kemas kini tepat pada masanya dan tetapkan tempoh sah
  • Meningkatkan cache pasti akan meningkatkan kerumitan sistem Pastikan anda memberi perhatian kepada pertukaran

Semak struktur jadual data

Pembelajaran yang disyorkan: "tutorial video mysql"

Atas ialah kandungan terperinci Ringkaskan operasi paling asas pengoptimuman 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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Cara membuka phpmyadmin Cara membuka phpmyadmin Apr 10, 2025 pm 10:51 PM

Anda boleh membuka phpmyadmin melalui langkah -langkah berikut: 1. Log masuk ke panel kawalan laman web; 2. Cari dan klik ikon phpmyadmin; 3. Masukkan kelayakan MySQL; 4. Klik "Login".

MySQL: Pengenalan kepada pangkalan data paling popular di dunia MySQL: Pengenalan kepada pangkalan data paling popular di dunia Apr 12, 2025 am 12:18 AM

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

Tempat Mysql: Pangkalan Data dan Pengaturcaraan Tempat Mysql: Pangkalan Data dan Pengaturcaraan Apr 13, 2025 am 12:18 AM

Kedudukan MySQL dalam pangkalan data dan pengaturcaraan sangat penting. Ia adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pelbagai senario aplikasi. 1) MySQL menyediakan fungsi penyimpanan data, organisasi dan pengambilan data yang cekap, sistem sokongan web, mudah alih dan perusahaan. 2) Ia menggunakan seni bina pelanggan-pelayan, menyokong pelbagai enjin penyimpanan dan pengoptimuman indeks. 3) Penggunaan asas termasuk membuat jadual dan memasukkan data, dan penggunaan lanjutan melibatkan pelbagai meja dan pertanyaan kompleks. 4) Soalan -soalan yang sering ditanya seperti kesilapan sintaks SQL dan isu -isu prestasi boleh disahpepijat melalui arahan jelas dan log pertanyaan perlahan. 5) Kaedah pengoptimuman prestasi termasuk penggunaan indeks rasional, pertanyaan yang dioptimumkan dan penggunaan cache. Amalan terbaik termasuk menggunakan urus niaga dan preparedStatemen

Mengapa menggunakan mysql? Faedah dan kelebihan Mengapa menggunakan mysql? Faedah dan kelebihan Apr 12, 2025 am 12:17 AM

MySQL dipilih untuk prestasi, kebolehpercayaan, kemudahan penggunaan, dan sokongan komuniti. 1.MYSQL Menyediakan fungsi penyimpanan dan pengambilan data yang cekap, menyokong pelbagai jenis data dan operasi pertanyaan lanjutan. 2. Mengamalkan seni bina pelanggan-pelayan dan enjin penyimpanan berganda untuk menyokong urus niaga dan pengoptimuman pertanyaan. 3. Mudah digunakan, menyokong pelbagai sistem operasi dan bahasa pengaturcaraan. 4. Mempunyai sokongan komuniti yang kuat dan menyediakan sumber dan penyelesaian yang kaya.

Cara menyambung ke pangkalan data Apache Cara menyambung ke pangkalan data Apache Apr 13, 2025 pm 01:03 PM

Apache menyambung ke pangkalan data memerlukan langkah -langkah berikut: Pasang pemacu pangkalan data. Konfigurasikan fail web.xml untuk membuat kolam sambungan. Buat sumber data JDBC dan tentukan tetapan sambungan. Gunakan API JDBC untuk mengakses pangkalan data dari kod Java, termasuk mendapatkan sambungan, membuat kenyataan, parameter mengikat, melaksanakan pertanyaan atau kemas kini, dan hasil pemprosesan.

Cara Memulakan MySQL oleh Docker Cara Memulakan MySQL oleh Docker Apr 15, 2025 pm 12:09 PM

Proses memulakan MySQL di Docker terdiri daripada langkah -langkah berikut: Tarik imej MySQL untuk membuat dan memulakan bekas, tetapkan kata laluan pengguna root, dan memetakan sambungan pengesahan port Buat pangkalan data dan pengguna memberikan semua kebenaran ke pangkalan data

CentOS memasang MySQL CentOS memasang MySQL Apr 14, 2025 pm 08:09 PM

Memasang MySQL pada CentOS melibatkan langkah -langkah berikut: Menambah sumber MySQL YUM yang sesuai. Jalankan YUM Pasang Perintah MySQL-Server untuk memasang pelayan MySQL. Gunakan perintah mysql_secure_installation untuk membuat tetapan keselamatan, seperti menetapkan kata laluan pengguna root. Sesuaikan fail konfigurasi MySQL seperti yang diperlukan. Tune parameter MySQL dan mengoptimumkan pangkalan data untuk prestasi.

Cara Memasang MySQL di CentOS7 Cara Memasang MySQL di CentOS7 Apr 14, 2025 pm 08:30 PM

Kunci untuk memasang MySQL dengan elegan adalah untuk menambah repositori MySQL rasmi. Langkah -langkah khusus adalah seperti berikut: Muat turun kekunci GPG rasmi MySQL untuk mencegah serangan pancingan data. Tambah fail repositori MySQL: rpm -uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm kemas kini yum repository cache: yum update mysql: yum pemasangan mysql-server mysql Server.

See all articles