Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सरल अनुक्रमण अनुकूलन

जैसा कि ऊपर टिप्पणी में बताया गया है, INDEX(Dob) उपयोग नहीं किया जाता -- चूंकि यह वर्ष-माह-दिन . पर एक अनुक्रमणिका है . आपको माह-दिन . पर एक अनुक्रमणिका बनानी होगी ।

शायद सबसे सुंदर समाधान नहीं, लेकिन:

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

देखें http://sqlfiddle.com/#!2/db82ff/1

एक बेहतर (?) उत्तर के लिए:चूंकि MySQL कंप्यूटेड कॉलम का समर्थन नहीं करता है, इसलिए आपको "महीने-दिन" कॉलम को पॉप्युलेट करने के लिए ट्रिगर्स की आवश्यकता हो सकती है, और उस पर एक इंडेक्स हो सकता है:

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");

यह "सरल" सम्मिलन की अनुमति देता है, यदि आवश्यक हो तो पूर्ण Dob . को संरक्षित करता है जैसा कि आपके मूल उदाहरण में है:

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

SELECT नए "खोज" कॉलम का उपयोग करने के लिए क्वेरी को संशोधित करना होगा:

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

सेट करें 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:कई क्षेत्रों में डुप्लिकेट ढूँढना

  2. जावा से चलाने पर mysqldump कोड 6 देता है, लेकिन कमांड लाइन से वही कमांड ठीक काम करता है

  3. उपयोगकर्ता को लॉग इन रखने के लिए PHP कुकी - क्या यह पर्याप्त सुरक्षित है?

  4. पहुंच अस्वीकृत; इस ऑपरेशन के लिए आपको (कम से कम एक) सुपर विशेषाधिकार की आवश्यकता है

  5. PHP के साथ MySQL डेटाबेस में चेकबॉक्स मान सम्मिलित करना