BY ORDERを向上させるためのSQLインデックスを作成する方法:私は最初の「状態」欄で、4つのテーブルを結合して、結果を順序付けする次のようないくつかのSQL持っているパフォーマンス
SELECT *
FROM a, b, c, d
WHERE b.aid=a.id AND c.id=a.cid AND a.did=d.id AND a.did='XXX'
ORDER BY a.status
それを働くしかし、それは遅いです。私はORDER BY句とテーブル "a"のインデックスがないためにこれを解決しました。
すべての4つのテーブルには、「id」列にPRIMARY KEYが設定されています。
このように、「ステータス」列を含む表にインデックスを追加する必要があることはわかりますが、それ以外に何を含める必要がありますか? 「入札」、「cid」、「did」もそこにあるべきですか?
一般的なSQLの意味でこれを尋ねようとしましたが、重要なのであれば、ターゲットはGearsで使用するSQLiteです。
事前のおかげで、
ジェイク(noobの)
SQLは何の簡易版だったのに役立ちます。sの使用中に混乱を避ける。 実際には、それぞれのテーブルから特定の列をいくつか選択して、実際には「*」を使用しません。 3つのインデックスを追加してどのように動くかをお試しください。 –
Brilliant!出来た。 0.4秒から0.001秒になった!それより公平なことは言えません! 私は、あなたがサムを示唆するように、それらを広げるのではなく、1つのインデックスのすべての列を取得しようとしていたということでした。 私が本当に必要とするのは、最初の原則からSQLを学ぶことです。もしも私が本を読む時間があれば... ありがとう! –
覚えておくと便利なヒントは、オプティマイザはインデックス内の最初のカラムの述語がある場合のみインデックスを使用することです。 – Sam