Jadual Kandungan
Pertanyaan dalam mysql yang tidak menggunakan indeks
Situasi tidak menggunakan indeks:
Rumah pangkalan data tutorial mysql Situasi pertanyaan manakah dalam mysql yang tidak menggunakan indeks?

Situasi pertanyaan manakah dalam mysql yang tidak menggunakan indeks?

May 29, 2023 pm 09:19 PM
mysql

Pertanyaan dalam mysql yang tidak menggunakan indeks

1 Lajur indeks mengambil bahagian dalam pengiraan dan tidak menggunakan indeks

SELECT `username` FROM `t_user` WHERE age=20;-- 会使用索引
SELECT `username` FROM `t_user` WHERE age+10=30;-- 不会使用索引!!因为所有索引列参与了计算
SELECT `username` FROM `t_user` WHERE age=30-10;-- 会使用索引
Salin selepas log masuk

2 tidak menggunakan indeks

-- 不会使用索引,因为使用了函数运算,原理与上面相同
SELECT username FROM t_user WHERE concat(username,'1') = 'admin1'; 
-- 会使用索引
SELECT username FROM t_user WHERE username = concat('admin','1');
Salin selepas log masuk

3 Gunakan pernyataan serupa untuk lajur indeks, dan mungkin tidak menggunakan indeks

SELECT * FROM USER WHERE username LIKE 'mysql测试%'   --走索引
SELECT * FROM USER WHERE username LIKE '%mysql测试'   --不走索引
SELECT * FROM USER WHERE username LIKE '%mysql测试%'  --不走索引
Salin selepas log masuk

4. Penukaran tersirat jenis data, perbandingan langsung antara lajur rentetan dan nombor, tanpa menggunakan indeks

-- stock_code字符串类型带索引
SELECT * FROM `stock_data` WHERE stock_code = '600538'  --走索引
SELECT * FROM `stock_data` WHERE stock_code = 600538  --不走索引
Salin selepas log masuk

5. Cuba elakkan operasi ATAU, selagi satu medan tidak mempunyai indeks, indeks tidak akan digunakan semasa menukar pernyataan, dan indeks tidak akan digunakan!

-- stock_code带索引,open不带索引
SELECT * FROM `stock_data` WHERE `stock_code` = '600538' OR `open` = 6.62  -- 不走索引
-- stock_code带索引,up_down_pre带索引
SELECT * FROM `stock_data` WHERE `stock_code` = '600538' OR `up_down_pre` = 5.1  -- 走索引
Salin selepas log masuk

6 di mana id !=2 atau di mana id <>

SELECT * FROM t_user WHERE username <> &#39;mysql测试&#39;
Salin selepas log masuk

7. Jika ia adalah batal atau tidak, anda tidak boleh menggunakan indeks.

SELECT * FROM t_user WHERE username IS NULL -- 不走索引
SELECT * FROM t_user WHERE username IS NOT NULL -- 不走索引
Salin selepas log masuk

8. Lajur indeks menggunakan pernyataan dalam, dan indeks mungkin tidak digunakan

-- stock_code数据类型为varchar
SELECT * FROM `stock_data` WHERE `stock_code` IN (&#39;600538&#39;)  -- 走索引
SELECT * FROM `stock_data` WHERE `stock_code` IN (&#39;600538&#39;,&#39;688663&#39;,&#39;688280&#39;)  -- 走索引
SELECT * FROM `stock_data` WHERE `stock_code` IN (大量数据)  -- 不走索引
SELECT * FROM `stock_data` WHERE `stock_code` IN (600538)  -- 不走索引
Salin selepas log masuk

Situasi tidak menggunakan indeks:

1. Tiada syarat pertanyaan atau syarat pertanyaan Tiada indeks dalam pangkalan data perniagaan, terutamanya jadual dengan jumlah data yang besar.

Cadangan:

1 Tukar kepada lajur diindeks sebagai syarat pertanyaan

2 Atau indeks lajur yang kerap ditanya

2 set hasil adalah kebanyakan data dalam jadual asal, yang sepatutnya lebih daripada 25%

Jika set hasil pertanyaan melebihi 25% daripada jumlah baris, pengoptimum merasakan bahawa tiada perlu mengindeks .

Cadangan:

1 Jika perniagaan membenarkan, anda boleh menggunakan kawalan had.

2 Berdasarkan pertimbangan perniagaan, adakah cara yang lebih baik? Jika tiada penyelesaian penulisan semula yang lebih baik

3 cuba jangan simpan data ini dalam mysql. Letakkan dalam redis.

3. Indeks itu sendiri tidak sah dan statistiknya tidak benar

Indeks mempunyai keupayaan untuk mengekalkan diri Apabila kandungan jadual kerap berubah, indeks mungkin kelihatan Tidak sah.

Tukar pelan:

Sandarkan data jadual, padam dan bina semula jadual yang berkaitan.

4. Syarat pertanyaan menggunakan fungsi pada lajur indeks atau melaksanakan operasi pada lajur indeks termasuk (+, -, *, /,!, dsb.)

<🎜. > Tukar kaedah:

Kurangkan penggunaan operasi pengiraan seperti tambah, tolak, darab dan bahagi dalam mysql.

5. Penukaran tersirat menyebabkan kegagalan indeks Ini juga merupakan kesilapan biasa dalam pembangunan. ) ;

select * from stu where name = ‘111&#39;;走索引
select * from stu where name = 111;不走索引
Salin selepas log masuk
Tukar kaedah:

Berunding dengan R&D, dan pertanyaan pernyataan mematuhi spesifikasi.

6.<>, tidak masuk tanpa pengindeksan (indeks tambahan)

Tukar kaedah: Cuba jangan gunakan kaedah di atas untuk pertanyaan , atau pilih lajur indeks sebagai syarat penapis.

Individu>,<,dalam mungkin atau mungkin tidak pergi.Cuba tambah had

atau atau mengikut perniagaan kesatuan

7.seperti “%” tanpa tanda peratus di hadapan

EXPLAIN SELECT * FROM teltab WHERE telnum LIKE ‘31%&#39; 走索引
EXPLAIN SELECT * FROM teltab WHERE telnum LIKE ‘%110&#39; 不走索引
Salin selepas log masuk

Kaedah tukar: Untuk keperluan carian kelas %linux% , anda boleh menggunakan elasticsearch +mongodb ialah produk pangkalan data yang mengkhusus dalam perkhidmatan carian

Atas ialah kandungan terperinci Situasi pertanyaan manakah dalam mysql yang tidak menggunakan indeks?. 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)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 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)

Mysql: Konsep mudah untuk pembelajaran mudah Mysql: Konsep mudah untuk pembelajaran mudah Apr 10, 2025 am 09:29 AM

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

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".

Cara Membuat Premium Navicat Cara Membuat Premium Navicat Apr 09, 2025 am 07:09 AM

Buat pangkalan data menggunakan Navicat Premium: Sambungkan ke pelayan pangkalan data dan masukkan parameter sambungan. Klik kanan pada pelayan dan pilih Buat Pangkalan Data. Masukkan nama pangkalan data baru dan set aksara yang ditentukan dan pengumpulan. Sambung ke pangkalan data baru dan buat jadual dalam penyemak imbas objek. Klik kanan di atas meja dan pilih masukkan data untuk memasukkan data.

MySQL dan SQL: Kemahiran Penting untuk Pemaju MySQL dan SQL: Kemahiran Penting untuk Pemaju Apr 10, 2025 am 09:30 AM

MySQL dan SQL adalah kemahiran penting untuk pemaju. 1.MYSQL adalah sistem pengurusan pangkalan data sumber terbuka, dan SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data. 2.MYSQL menyokong pelbagai enjin penyimpanan melalui penyimpanan data yang cekap dan fungsi pengambilan semula, dan SQL melengkapkan operasi data yang kompleks melalui pernyataan mudah. 3. Contoh penggunaan termasuk pertanyaan asas dan pertanyaan lanjutan, seperti penapisan dan penyortiran mengikut keadaan. 4. Kesilapan umum termasuk kesilapan sintaks dan isu -isu prestasi, yang boleh dioptimumkan dengan memeriksa penyataan SQL dan menggunakan perintah menjelaskan. 5. Teknik pengoptimuman prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi menyertai dan meningkatkan kebolehbacaan kod.

Cara Membuat Sambungan Baru ke MySQL di Navicat Cara Membuat Sambungan Baru ke MySQL di Navicat Apr 09, 2025 am 07:21 AM

Anda boleh membuat sambungan MySQL baru di Navicat dengan mengikuti langkah -langkah: Buka aplikasi dan pilih Sambungan Baru (Ctrl N). Pilih "MySQL" sebagai jenis sambungan. Masukkan nama host/alamat IP, port, nama pengguna, dan kata laluan. (Pilihan) Konfigurasikan pilihan lanjutan. Simpan sambungan dan masukkan nama sambungan.

Cara Memulihkan Data Selepas SQL Memadam Barisan Cara Memulihkan Data Selepas SQL Memadam Barisan Apr 09, 2025 pm 12:21 PM

Memulihkan baris yang dipadam secara langsung dari pangkalan data biasanya mustahil melainkan ada mekanisme sandaran atau transaksi. Titik Utama: Rollback Transaksi: Jalankan balik balik sebelum urus niaga komited untuk memulihkan data. Sandaran: Sandaran biasa pangkalan data boleh digunakan untuk memulihkan data dengan cepat. Snapshot Pangkalan Data: Anda boleh membuat salinan bacaan pangkalan data dan memulihkan data selepas data dipadam secara tidak sengaja. Gunakan Pernyataan Padam dengan berhati -hati: Periksa syarat -syarat dengan teliti untuk mengelakkan data yang tidak sengaja memadamkan. Gunakan klausa WHERE: Secara jelas menentukan data yang akan dipadam. Gunakan Persekitaran Ujian: Ujian Sebelum Melaksanakan Operasi Padam.

Cara menggunakan redis berulir tunggal Cara menggunakan redis berulir tunggal Apr 10, 2025 pm 07:12 PM

Redis menggunakan satu seni bina berulir untuk memberikan prestasi tinggi, kesederhanaan, dan konsistensi. Ia menggunakan I/O multiplexing, gelung acara, I/O yang tidak menyekat, dan memori bersama untuk meningkatkan keserasian, tetapi dengan batasan batasan konkurensi, satu titik kegagalan, dan tidak sesuai untuk beban kerja yang berintensifkan.

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.

See all articles