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

MySQL में डेटाटाइम कॉलम द्वारा सॉर्ट करने के लिए फाइलोर्ट का उपयोग करना

आपके पास (public, date) . पर एक समग्र अनुक्रमणिका होनी चाहिए

इस तरह, MySQL public पर फ़िल्टर करेगा और date पर छाँटें ।

आपके EXPLAIN . से मैंने देखा कि आपके पास (public, date) . पर एक संयुक्त अनुक्रमणिका नहीं है ।

इसके बजाय आपके पास public . पर दो अलग-अलग अनुक्रमणिकाएं हैं और date . को . कम से कम, उनके नाम IDX_PUBLIC . तो यही हैं और DATE बताओ।

अपडेट करें:

आप public कॉलम BIT नहीं है , यह एक BINARY(1) है . यह एक वर्ण प्रकार है और वर्ण तुलना का उपयोग करता है।

पूर्णांकों की वर्णों से तुलना करते समय, MySQL बाद वाले को पूर्व में परिवर्तित करता है, इसके विपरीत नहीं।

ये क्वेरी अलग-अलग परिणाम देती हैं:

CREATE TABLE t_binary (val BINARY(2) NOT NULL);

INSERT
INTO    t_binary
VALUES
(1),
(2),
(3),
(10);

SELECT  *
FROM    t_binary
WHERE   val <= 10;

---
1
2
3
10

SELECT  *
FROM    t_binary
WHERE   val <= '10';
---
1
10

या तो अपना publicबदलें कॉलम को bit होना चाहिए या अपनी क्वेरी को इस तरह फिर से लिखें:

SELECT  c.*
FROM    Cars c
WHERE   c.PUBLIC = '1'
ORDER BY 
        DATE DESC

, मैं। इ। वर्णों की तुलना वर्णों से करें, पूर्णांकों से नहीं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल सहायता | INSERT कथन की चयन सूची में सम्मिलित सूची की तुलना में कम आइटम हैं

  2. मैं अद्यतन विवरण में जॉइन का उपयोग कैसे कर सकता हूं?

  3. django ऐप का नाम बदलते समय असंगत माइग्रेशन इतिहास

  4. एक HTTP अनुरोध में एक जेएमटर जेडीबीसी अनुरोध से प्रतिक्रियाओं का उपयोग कैसे करें

  5. संग्रहीत प्रक्रिया पैरामीटर SQL के लिए IN कथन का उपयोग करना