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

Pengoptimalan Pengindeksan Sederhana

Seperti yang dijelaskan dalam komentar di atas, INDEX(Dob) tidak digunakan -- karena ini adalah indeks pada tahun-bulan-hari . Anda harus membuat indeks pada bulan-hari .

Mungkin bukan solusi yang paling elegan, tapi:

CREATE TABLE `birthdayCard`(`Email` VARCHAR(255), `FirstName` CHAR(30), `LastName` CHAR(30),
                            `Mob` int, `Dob` int, 
                            PRIMARY KEY (Email), INDEX(`Mob`, `Dob`));

Lihat http://sqlfiddle.com/#!2/db82ff/1

Untuk jawaban yang lebih baik( ?):karena MySQL tidak mendukung kolom yang dihitung, Anda mungkin memerlukan pemicu untuk mengisi kolom "bulan-hari", dan memiliki indeks di dalamnya:

CREATE TABLE `birthdayCard`(`Email` VARCHAR(255), `FirstName` CHAR(30), `LastName` CHAR(30),
                            `Dob` DATE,
                            `Birthday` CHAR(5),
                            PRIMARY KEY (Email), INDEX(`Birthday`));

CREATE TRIGGER ins_bithdayCard BEFORE INSERT ON `birthdayCard`
FOR EACH ROW
    SET NEW.`birthday` = DATE_FORMAT(NEW.`Dob`, "%m%d");

CREATE TRIGGER upd_bithdayCard BEFORE UPDATE ON `birthdayCard`
FOR EACH ROW
    SET NEW.`birthday` = DATE_FORMAT(NEW.`Dob`, "%m%d");

Ini memungkinkan penyisipan "sederhana", jika diperlukan Dob full lengkap seperti dalam contoh asli Anda:

insert into birthdayCard (Email, FirstName, LastNAme, Dob) 
   values ("[email protected]", "Sylvain", "Leroux", '2013-08-05');

SELECT kueri harus dimodifikasi untuk menggunakan kolom "pencarian" baru:

SELECT * FROM `birthdayCard` WHERE Birthday = DATE_FORMAT(NOW(), "%m%d");

Atur http://sqlfiddle.com/#!2/66111/3



  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 dengan karakter Jepang

  2. Catatan acak dari database mysql dengan CodeIgniter

  3. Permintaan SQL- Perbarui jika ada, masukkan sebaliknya

  4. Bagaimana mendapatkan ukuran gumpalan di PHP atau SQL

  5. Periksa Kolom/Kunci Ada?