(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。文字を整数ではなく文字と比較します。