(public, date)
に複合インデックスが必要です
このように、MySQL
public
でフィルタリングします date
で並べ替えます 。
EXPLAIN
から (public, date)
に複合インデックスがないようです 。
代わりに、public
に2つの異なるインデックスがあります および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
、 私。 e。文字を整数ではなく文字と比較します。