をわずかに異なるのノートでは、日付に基づいてレコードを取得するには、このようなクエリが悪いです。
SELECT *
FROM deals
WHERE DATE_FORMAT(expiration_date,'%Y-%m-%d %H:%i:%s') >= NOW()
AND cat1 LIKE '%$geef%'
ORDER BY deal_id ASC
有効期限の形式は何ですか。あなたがDATE_FORMATに渡しているとすれば、それはDATEまたはDATETIME型であると仮定します。 expiration_date
をDATE_FORMATにラップすると、オプティマイザはそのフィールドのインデックスを使用できず、フルテーブルスキャンを強制します。これは悪いニュースです!
あなたはDATE_FORMAT削除しても同じ結果が得られます -
SELECT *
FROM deals
WHERE expiration_date >= NOW()
AND cat1 LIKE '%$geef%'
ORDER BY deal_id ASC
、今オプティマイザは、インデックスの最初のフィールドとしてEXPIRATION_DATE含まれているインデックスを使用することができるようになります。
cat1
というフィールドがあるという事実は、あなたが他のカテゴリフィールドを持っていると思うようになります。再び、これは悪いニュースです。列をまたいでグループを繰り返すことはあなたの友人ではありません。彼らはあらゆる種類のものを必要以上に難しくし、効率的ではありません。 First Normal Formでこの記事を読んでください。
クエリ内の '$ cat'の値は何ですか? – safarov
$ catではカテゴリを定義できます。私が考える質問にとっては重要ではない。 \t '$ geef = $ _GET ['categorie']; \t $ cat = "AND cat1 like '%$ geef%'"; ' – Nathaniel
あなたのテーブル構造は何ですか?テーブルにデータのサンプルを含めることと、結果をどのように見えるようにするかは良い考えです。 – nnichols