1. ホーム
  2. mysql

[解決済み] Mysql: const テーブルを読み込んだ後、不可能な場所に気づいた。

2022-02-09 07:30:45

質問

一つ質問があります。

SELECT l.id, title 
FROM (SELECT id 
      FROM news 
      WHERE (title LIKE '%football predictions argentina%' OR text LIKE '%football predictions argentina%') 
             AND lang = 'en' 
             AND STATUS = 1 
      ORDER BY id LIMIT 0, 10)  
o JOIN news l ON l.id = o.id 
WHERE 1 
ORDER BY date DESC 
LIMIT 0, 10;

説明コマンドを実行すると、次のようなメッセージが表示されます。

残念ながら、私はそれが何を意味し、どのようにそれを修正するために、把握することはできません?

テーブルの構造はこのようなものです。

id      int(10) 
title   varchar(255)    
text    text    
image   varchar(255)    
lang    varchar(3)  
date    date    
status  smallint(1) 

そして、id - プライマリキーを除いて、(lang, status, date)の複合インデックスを1つ持っています。

どのように解決するのですか?

const tables を読み込んだ後に不可能であることに気づいた」というメッセージは、少し紛らわしいものです。これは基本的に、Where criteria の 1 つがどのレコードにもマッチしなかったため、MySQL オプティマイザがクエリの分析を進められなかった(進めたくなかった...)ということを意味します。単に空の結果セットを返しただけなのです。

修正方法はとても簡単で、結果セットを返すようなWhere句で説明することを確認することです。

MySQLは 機能要望 より意味のあるメッセージに変更するよう求めていますが、これまで気にしたことはないと思います。