Bagaimana untuk Mengoptimumkan Prestasi Paparan Apabila WHERE Kesan Klausa Mengira Pertanyaan?

DDD
Lepaskan: 2024-10-24 05:46:30
asal
911 orang telah melayarinya

How to Optimize View Performance When WHERE Clause Impacts Count Queries?

Pengoptimuman Prestasi MySQL View

Soalan

Pertanyaan untuk mengira pengguna dalam keadaan tertentu menunjukkan kos yang lebih tinggi dengan paparan berbanding langsung imbasan meja. Bagaimanakah klausa WHERE berfungsi dalam paparan dan bagaimanakah isu prestasi ini boleh diselesaikan?

Jawapan

Gelagat klausa WHERE dalam paparan ditentukan oleh algoritma paparan yang digunakan.

Biasanya, dalam paparan, klausa WHERE digunakan selepas paparan mendapatkan semula semua baris daripada jadual asas. Algoritma ini dikenali sebagai tergoda. Walau bagaimanapun, dalam kes ini, algoritma temptable tidak digunakan. Sebaliknya, algoritma cantum telah digunakan.

Algoritma cantuman adalah lebih cekap dalam kebanyakan kes tetapi tidak disokong apabila paparan mengandungi fungsi agregat (seperti COUNT()) atau klausa GROUP BY .

Untuk menyelesaikan isu ini, definisi paparan boleh diubah suai untuk menggantikan COUNT(*) dengan COUNT(KEADAAN DISTINCT). Ini akan memaksa MySQL menggunakan algoritma gabungan, yang boleh meningkatkan prestasi dengan ketara.

<code class="sql">CREATE OR REPLACE VIEW vw_users AS
SELECT
  state,
  COUNT(DISTINCT state) AS cnt
FROM
  users;

EXPLAIN
SELECT
  cnt
FROM
  vw_users
WHERE
  state = 'ca';</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Prestasi Paparan Apabila WHERE Kesan Klausa Mengira Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber: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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!