Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie sortowania plików do sortowania według kolumny daty i godziny w MySQL

Musisz mieć złożony indeks w dniu (public, date)

W ten sposób MySQL będzie filtrować według public i sortuj według date .

Z Twojego EXPLAIN Widzę, że nie masz indeksu złożonego w dniu (public, date) .

Zamiast tego masz dwa różne indeksy na public i w date . Przynajmniej takie są ich nazwy IDX_PUBLIC i DATE powiedz.

Aktualizacja:

Jesteś public kolumna nie jest BIT , jest to plik BINARY(1) . Jest to typ postaci i używa porównania znaków.

Porównując liczby całkowite ze znakami, MySQL przekształca to drugie w pierwsze, a nie odwrotnie.

Te zapytania zwracają różne wyniki:

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

Zmień swój public kolumna ma być bit lub przepisz zapytanie w ten sposób:

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

, i. mi. porównaj znaki ze znakami, a nie liczbami całkowitymi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak poprawnie zapętlić funkcję składowaną w MySQL?

  2. Django:błąd składni MySQL podczas przekazywania parametrów do surowego zapytania SQL

  3. Aktualizacja z Django 1.6 (z południem) do 1.8 nie modyfikuje „last_login” w tabeli użytkownika

  4. PHP, MySQL:nie mogę wyjaśnić tego niezdefiniowanego błędu indeksu

  5. Jak zaktualizować Bazę Danych podczas zaznaczania checkboxa za pomocą jquery?