このクエリは、現在数千の行がある信頼性の低い小さなテーブルからのヒントリスト(ヒント)を返します。しかし、それは非常にゆっくりとヒントを返すので非常に便利です。他の質問のほとんどは、減速がどこにあるのかDBをポーリングすることを示唆しています。私は本当にそれを行うために必要なレベルでアクセス権を持っていません。現在、以下のようになっていますが、誰かが私に知られていない技術を見せてくれるかもしれません。私は本当に次のクエリをスピードアップしたいと思います。MySQLをより効率的に動作させるには?
$stmt = $db_found->prepare("SELECT DISTINCT callsign, Fname, ID, grid,
tactical, latitude, longitude, email, Lname
FROM NetLog
WHERE recordID IN (SELECT max(recordID)
FROM NetLog
WHERE callsign LIKE ?
AND callsign NOT IN ('W0KCN','WA0QFJ','T0EST','K0ERC','NR0AD')
GROUP BY callsign)");
これにより、最新のバージョンのrecordIDがプルアップされます。 recordIDは、この表の自動インクリメント変数です。私が最初のFROMとWHEREを削除すると、クエリはもっと速く実行されます。ここのような;
$stmt = $db_found->prepare("SELECT DISTINCT callsign, Fname, ID, grid, tactical, latitude,
longitude, email, Lname, recordID
FROM NetLog
WHERE callsign LIKE ?
AND callsign NOT IN ('W0KCN','WA0QFJ','T0EST','K0ERC','NR0AD')
GROUP BY callsign");
問題は、これが最新のレコードであるという保証はありません。
私はリターンをスピードアップできますが、このコールサインの最新のrecordIDを取得していることを確認するにはどうすればよいですか?
私はこれの音が気に入っていますが、動作する構文を取得するのに問題があります。私は正確にエラーを取得しませんが、私は私のエディタで構文が検証されないことがわかります。 ? –
@KeithDKaiser。これは二重引用符で囲む必要があります(また、;によって更新されました。更新された.. – scaisEdge
私はまだこのようなエラーを受け取ります:#1054 - 'on clause'の 't1.recordID'列が不明です。 –