いくつかの結合で次のmysql select-queryを使用しています。参加する多くのことのようです複数の結合とテーブル構造を持つMysql-db-select
SELECT *
FROM table_news AS a
INNER JOIN table_cat AS b ON a.cat_id = b.id
INNER JOIN table_countries AS c ON a.country_id = c.id
INNER JOIN table_addresses AS d ON a.id = d.news_id
WHERE a.deleted = 0
AND a.hidden = 0
AND a.cat_id = ".$search_cat."
AND a.country_id = ".$search_country."
AND a.title LIKE '%".$search_string."%'
OR a.deleted = 0
AND a.hidden = 0
AND a.cat_id = ".$search_cat."
AND a.country_id = ".$search_country."
AND a.subtitle LIKE '%".$search_string."%'"
:これは以下のようにやや良いSELECTステートメントがどのように見えるべきかである場合、私は疑問に思って。テーブルbとテーブルcには3つまたは4つのフィールドしか含まれていませんが、結合の数が開始ページの検索をはるかに遅くするのではないかと思いますか?
テーブルd(通り、市など)のフィールドをメインテーブルに戻す方が良いでしょうか?このクエリは、このクエリが実行されるほとんどの時間に必要ですか?
事前にありがとう、 ジェイデン
ありがとうございました。私の疑問はありますが、メインテーブルからアドレスフィールドを分割すると、多くの意味があるのでしょうか?それぞれのindizes、私はすでにメインテーブルのフィールド "id"に対応するアドレステーブルのフィールド "news_id"にインデックスを追加しました。追加した後、mysqlハンドルが自動的に右にindizes? – jayden
SELECT *は読みやすくするためのものです... – jayden