Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。1,507件0検索結果のクエリ速度を上げるため、DistinctをExistに置き換えたいのですが、自分には複雑でうまく置き換えができませんでした。2つあるのですが、下記となります。計測したところ合計で約2.5秒ほどかかっています。)どうぞよろしくお願いいたします。post_metaの構造ですが、ワードプレス標準のものをそのまま利用しており下記となっています。【post_metaテーブル】(1つ目の参考に抜粋しました。meta_idがプライマリとなります。個の銅バッジ1「DistinctをExistに置き換えたい」という意図がよく分かりません。4:20テーブル定義と実際の値、期待する結果を書いていただいた方がよろしいかと思います。あとそれぞれのテーブルの行数。サブクエリーを目の敵にしている人もいますが、うまく使って行数を絞ってからJOINすると良いことが多いです。6:06テーブル定義的に必ずユニークになるような内容がベースに存在しないとDISTINCTからEXISTSへの書き換えは効果を発揮しません。KEYになっているかがわからないと全く手を出せない書き換えですが、テーブル名(WordPressベース?)や書かれているSQLから推定して、EXISTSへの書き換えがうまくできる可能性はほぼないと言って良いでしょう。他の方のご意見を参考にして、他の方法でのチューニングを考えるべきです。22:04WP標準のDBなんですね。ER図を見つけました。30万件は小さなDBだと思って良いです。句の使用は相関副問合せとセットとなる事が多いのですが、そうするとパフォーマンスは悪化する事の方が多いです。避ける事に注力する方が良いプランになるように思います。ところで、インデックスは使用されているでしょうか。カバリングインデックスを作成するとクエリパフォーマンスの向上が見込めると思います。個の銅バッジInasyncさん、ありがとうございます。インデックスの設定などは行っていませんでした。上記とmeta_keyも同様に行ったのですが、パフォーマンスがまったく改善されませんでした。詳しく教えていただければ幸いです。ようなインデックスをイメージしていましたが、パフォーマンス向上には寄与しませんでしたか。クエリプランを見る必要がありますね。等の記事を参考に試してみて下さい。22:18Inasyncさん、ありがとうございます。インデックスの設定ですが、下記にて2.5秒⇒1.2秒まで縮めることができました。|0返信をいただいたので回答を更新。madorisyuruiとmadorisuはpost一つにつきそれぞれ一度しか現れない。publishされているpostが全体のうち大半を占める。wp_postmetaとなって行数が爆発するから、先にサブSELECTで、wp_postmetaを一度だけ読み込んでbukkenshubetsuの条件に従ってmadirisyurui,madorisuだけ抽出した。ほとんどのpostsはpublishされているので上で抽出した行で捨てるものはほとんど無い想定。想定が逆なら先にpost_idでメタデータのSELECTを絞ることも考えると良い。group_concatしているのは縦のテーブルを横のテーブルに変換するため。0.1最適なクエリーはデータの行数、性質によりますし、検証のしようがないので、目的にあっているのかもわかりませんが、とりあえずの回答です。目的に合わない、速度が遅いと言うことであればご指摘ください。返信があればその2についても考えてみます。個の銅バッジご連絡ありがとうございます。パフォーマンスとしては0.5s⇒0.04sになり十分な効果が見込めました。15:31Kenjiさん、ありがとうございます。post_metaの構造ですが、ワードプレス標準のものをそのまま利用しており下記となっています。クエリをテストしたところ期待したものと異なっていました。p.idで、グループ化されていたことが原因のようだったので、そこをmadorisuでグループすると下記のようになってしまいました。引き続きよろしくお願いいたします。22:33kenjiさん、ご連絡が遅くなり申し訳ありません。|-1別回答の形で恐縮です。組合せで一意に絞り込む。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。公開5周年をお祝いしましょう!🌸コメントで回答する理由を教えてください関連する質問1PHPMyAdminはどうやってSQLをダンプしているのか2MySQLのSQLにてグループ内で連番を付けたい3SQLで無いデータを表示させたい1mysqlで登録数を求めるsql0sql内でIF文を2つ使いたい0中間テーブル同士を比較して取得するSQL文をかきたいです。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。