Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL EXPLAIN:Menggunakan indeks vs. Menggunakan kondisi indeks

Sebuah contoh menjelaskannya dengan baik:

SELECT Year, Make --- possibly more fields and/or from extra tables
FROM myUsedCarInventory
WHERE Make = 'Toyota' AND Year > '2006'

Assuming the Available indexes are:
  CarId
  VIN
  Make
  Make and Year

Kueri ini akan MENJELASKAN dengan 'Menggunakan Indeks' karena tidak perlu, sama sekali , untuk "memukul" tabel myUsedCarInventory itu sendiri karena indeks "Membuat dan Tahun" "menutupi" kebutuhannya berkaitan dengan elemen klausa WHERE yang berkaitan dengan tabel itu .

Sekarang, bayangkan, kita tetap membuat kueri yang sama, tetapi untuk penambahan kondisi pada warna

...
WHERE Make = 'Toyota' AND Year > '2006' AND Color = 'Red'

Kueri ini kemungkinan akan MENJELASKAN dengan 'Menggunakan Kondisi Indeks' ('kemungkinan', di sini adalah untuk kasus bahwa Toyota + tahun tidak akan diperkirakan cukup selektif, dan pengoptimal dapat memutuskan untuk hanya memindai tabel). Ini berarti MySQL akan PERTAMA gunakan indeks untuk menyelesaikan Make + Year, dan itu juga harus mencari baris yang sesuai dalam tabel, hanya untuk baris yang memenuhi kondisi Make + Year. Itulah yang terkadang disebut sebagai "tekan pengoptimalan ".



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL hanya mendapatkan ROLLUP keseluruhan

  2. MySQL CREATE FUNCTION Syntax

  3. Buat tabel dengan pemeriksaan PHP dengan nilai sebelumnya dan nilai saat ini (Array)

  4. MySQL:Total GROUP BY DENGAN ROLLUP rasa ingin tahu

  5. Bagaimana cara menghubungkan ke Amazon RDS melalui SSL?