sql >> Databáze >  >> RDS >> Mysql

Použití řazení souborů k řazení podle sloupce data a času v MySQL

Musíte mít složený index na (public, date)

Tímto způsobem MySQL bude filtrovat na public a seřadit podle date .

Z vašeho EXPLAIN Vidím, že na (public, date) nemáte složený index .

Místo toho máte dva různé indexy na public a v date . Alespoň tak se jmenují IDX_PUBLIC a DATE řekni.

Aktualizace:

Jste public sloupec není BIT , je to BINARY(1) . Je to typ postavy a používá porovnávání znaků.

Při porovnávání celých čísel se znaky MySQL převede druhé na první, nikoli naopak.

Tyto dotazy vracejí různé výsledky:

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

Buď změňte public sloupec být bit nebo přepište svůj dotaz takto:

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

, i. E. porovnávejte znaky se znaky, nikoli s celými čísly.



  1. YEAR() Příklady v SQL Server (T-SQL)

  2. Model globálního nastavení Laravel

  3. Dotaz na offset MySql nefunguje

  4. Jak extrahovat podřetězec z řetězce v T-SQL