質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

3回答

436閲覧

MySQLの検索速度について

toera

総合スコア14

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2018/03/29 00:05

MySQLで大きなデータベースを扱いたいんですが、検索速度に関していくつか質問があります。

①カラムの数で検索速度は変わるのか
使わない情報のカラムを消したDBを作った方が、検索が速くなりますか?

②専用のテーブルを作るべきか
例えば人が品物を買った情報を
(人コード, 人名)と(品物コード, 品物名)と(人コード ,品物コード, 買った日付)
みたいな感じの3つのテーブルで扱ってるとし、必要なのは(人名, 品物名)だけとします。

3つのテーブルを使っていれば結合が必要になり、遅くなりそうですが、
3つのテーブルから専用の(人名, 品物名)のテーブルを作れば検索は速くなりますか?

初心者で質問に不備があるかもしれませんが、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

①カラムの数で検索速度は変わるのか

データ量によって速度は変わりますから、カラム数が少ない=データ量が少ない、ということなら早くはなります。
但し、カラムの数ということを重点にテーブル設計を行うことは避けて下さい。

②専用のテーブルを作るべきか

言われているような事は、「第二正規化」の関数従属性に従っていない為、行うべきではありません。

速度の観点からも、専用のテーブルだけからみると取得は早くなるかもしれませんが、そのデータを作る時間が増えています。

そのようなチューニングを行う事もありますが、システムの全体バランスを考えられるレベルでないなら、行うべきではありません。

「DBを正規化すると遅くなる」は誤解,実証実験の結果が公開に

投稿2018/03/29 00:37

編集2018/03/29 00:40
sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

①カラムの数で検索速度は変わるのか

一般論として「使わない情報」であれば無いほうが早くなるはずです
データ量が多いということは同じ効率で検索してもファイルI/Oが違いますので

②専用のテーブルを作るべきか

3つのテーブルを使っていれば結合が必要になり、遅くなりそう

正規化というものは必ずしも高速化を担保するものではありません
運用の仕方によっては確かに遅くなるケースもあるでしょう。
たとえば今回のケースで複雑な検索をしないでただデータを
冗長に表示するだけなら1テーブルに突っ込んでおいたほうが
理論上高速になるかと思います。
ただし正規化をしないと整合性が取れなくなる可能性がたかまります
たとえば、人コード、人名の組み合わせが1テーブルに両方のせていれば
相関関係が崩れる可能性があるということ。
また人コードに対する人名が変更されたとき正規化したマスター
テーブルであれば1データをconstに修正で済むところが、
すべてを1テーブルに煩雑に突っ込んであれば、該当する全データ
を変更する必要がでてきます。

投稿2018/03/29 00:27

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

環境にもよりますが、パーティショニングも視野に入れると良いと思います。
※数千万レコードのレベルだと必須ではないかと?

投稿2018/03/29 00:51

himakuma

総合スコア952

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問