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

, i. д. сравнявайте знаци със знаци, а не с цели числа.



  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. Оптимизирайте MySQL заявката, за да избегнете Използването на where; Използване на временно; Използване на сортиране на файлове

  3. Как mysql прави обратна разделителна способност на IP адреси?

  4. Промяна на колона в MySQL от int на double?

  5. Има ли причина все още да използвате змийски случай за таблици и колони на базата данни?