2016-08-02 2 views
0

データベースには1,000個のテーブルがあり、各テーブルには1,000個の行があるとします。これらの1,000個のテーブルから1つのテーブルを検索すると、テーブル内のデータを検索するのに必要な検索時間と同じですか?これは、sqlのほうが高速です:テーブルを検索しているか、テーブルのデータを検索していますか?

つまり、1,000行のテーブルからデータを取得する場合と同じように、SQLは同じ検索アルゴリズムを使用して1,000個のテーブルからテーブルを検索しますか?

+1

テーブルの検索についてどう思いますか? 'select * from information_schema.tables'?テーブルはテーブルである。 – JNevill

+1

同じ構造を持つ1000のテーブルがある場合は、データベース設計を読み上げる必要があります。テーブルが異なるためにどのテーブルからデータを取得するのかわからない場合は、データベース設計をよりよく理解しておく必要があり、各テーブルの内容を理解してその意味を理解するまでクエリを実行する資格はありませんのデータです。一般に、テーブルを探すためのクエリを書くことはありません。 – HLGEM

+0

私はあなたのデータベース設計でルーキーなミスを犯したと思います。なぜあなたはテーブルを検索したいのですか?説明してください – RiggsFolly

答えて

2

いいえ、MySQLは同じ検索アルゴリズムを使用してテーブルを検索しません。

MySQLはメモリ内の "データ辞書"を維持しているため、特定のテーブルの名前を指定するクエリを実行すると、そのテーブルが非常に素早く参照されます。 MySQLがテーブル内のデータを検索するよりもはるかに高速です。たとえば、自分の仕事で管理しているデータベースサーバーには150,000を超えるテーブルがありますが、これは問題ではありません。

これは、実行速度を上げるために、多数のテーブルにデータを分割する必要があるということですか? いいえ - これは通常良いトレードオフではありません。これにより、コードでどのテーブルをクエリするかを選択する必要があるため、アプリケーションコードが複雑になります。多くのテーブルで結果を検索する必要がある場合は、データが1つのテーブルにあることを希望するケースもあります。 「すべては単純できるだけ簡単にではなく、しなければならない。」

:ここ

が従うべき原則のカップルです(attributed to Albert Einstein)

「まず動作させてから、正しいものにして、最後に速くしてください」 (Stephen C. Johnson and Brian W. Kernighan、1983)

+0

から変数select *で受け取りました。 。時間が、データがメモリにあるときに主キーを使用して、同様のサイズのテーブルにレコードを配置する時間と基本的に同じではないのはなぜですか? –

+0

ありがとうございました.....これは私が必要としていた答えでした – AJchandu

+0

@ GordonLinoff、主キーを検索すると、O(ログn)の複雑さを持つBツリートラバーサルです。テーブルのハッシュインデックスの検索は、O(1)の複雑さです。 –

関連する問題