可能性の重複:
SQL — How is DISTINCT so fast without an index?SELECT DISTINCTはとても速いのですか?
こんにちは、
私はSQLiteの中で600万行と 'リンク' と呼ばれるテーブルを持つデータベースを持っています。データベースには、「src」列と「dest」列の2つの列があります。現在、指数はありません。
srcとdestの間にはかなりの数の共通の値がありますが、かなりの数の重複した行もあります。
私がやってみようとしている最初のことは、すべての重複行を削除してから、結果にいくつかの追加処理を実行することですが、私は奇妙な問題に遭遇しています。
まず、SELECT * FROMリンク先のsrc = 434923およびdest = 5010182です。これで1つの結果がかなり速く返され、残りの600m行でテーブルスキャンを実行していると仮定して実行するにはかなり長い時間がかかります。
ただし、SELECT DISTINCT * FROMリンクを実行すると、すぐに行が返されるようになります。質問は:これはどのように可能ですか?確かに各行に対して、その行はテーブル内の他のすべての行と比較されなければなりませんが、これはテーブル内の残りの行のテーブルスキャンを必要とします。SHOULDは時代がかかります!
なぜSELECT DISTINCTが標準SELECTよりもずっと速いのですか?
なぜ同じ質問をもう一度、同じ名前の2つの異なる口座から質問していますか? –
本当に正直なところ、私は分かりません。私は前に質問を投稿しようとしましたが、ここのサーバーからエラーがありました。 元の質問を見つけようとしましたが、私の口座に登録されていませんでした(それはまだありません)。それを検索して見つかりませんでした。間違いに対する謝罪 –