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

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

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

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

1247閲覧

データベースのカラム内に格納するデータは、2バイト文字よりASCII文字のほうが検索速度が速くなるのかどうか?

Analgesic

総合スコア14

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2018/07/05 07:56

編集2018/07/05 09:02

前提・実現したいこと

一般的な質問です。データベースのカラム内に格納するデータは、2バイト文字よりASCII文字のほうが検索速度が速くなるのでしょうか?

例えば下記の2種類のデータベースがあったとして、

データベースA

fruitprice
りんご150
みかん50
なし200

データベースB

fruitprice
ringo150
mikan50
nasi200

AよりもBのほうが検索速度が速くなるのでしょうか?もちろん実際に上記のようなわずかなデータなら検索速度など問題にはならないでしょうが、データ数が膨大になったとき、2バイト文字とASCII文字で検索速度に差が出てくるのかどうか、そこが知りたいです。

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

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

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

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

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

m.ts10806

2018/07/05 08:02

実際に試されたのでしょうか。
sazi

2018/07/05 08:06

コード体系は何ですか?utf-8?
Analgesic

2018/07/05 09:08

>mts10806さん 実験のために大量のデータを登録するという方法を知らなかったのでまだ試していません。
Analgesic

2018/07/05 09:09 編集

>saziさん 私が今使用しているのはSQLiteで、文字コードはUTF-8でした。データベースで使用する文字コードによっては、こういったケースでの検索速度に大きな違いが出てくる可能性があるということでしょうか?
sazi

2018/07/05 09:24 編集

文字コードによっては文字で使用するバイト数が違いますので。utf-8でなければバイト数は同じです。
m.ts10806

2018/07/05 10:34

簡単なのはExcelで大量にInsert文作ることですが、もっとたくさん作りたいのであればbatでもshでもシェルで作りたい件数文ループしてInsert文作るのが良いかと。ループ文が使えてテキストファイルが作れる言語であれば何でも良いです。
guest

回答2

0

ベストアンサー

個人的には違いはあっても微々たるものだと想像しますが、実際に10万件INSERTして処理時間の違いを実測しては?

投稿2018/07/05 08:25

Orlofsky

総合スコア16415

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

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

m.ts10806

2018/07/05 08:36 編集

10万件→100万件→1000万件でどれだけ差が広がっていくかも見ておいてもらいたいですね。 ※矢印の位置がおかしかったので修正
Orlofsky

2018/07/05 08:33

それは良い考え。
Analgesic

2018/07/05 09:09

>Orlofskyさん プログラムを組んで実際にデータを大量に登録してみるということですね。やり方が分からないので調べてから実施し、結果をここに書き込みます。
Analgesic

2018/07/07 00:07

試してみました。まず10万件のデータを試したところ、どちらも差は感じられませんでした。そして100万件のデータを登録しようとしたところ(PaizaCloudという開発環境を使っているのですが)、登録に長時間かかった末に「容量不足で書き込めない」というような表示が出て、さらにそれ以降「立ててあるpumaサーバが閉じられなくなる」「ターミナルを開くたび mkdir: cannot create directoryやらNo space left on deviceといったような表示が出る」など環境がおかしな状態になってしまい、100万件・1000万件データで試すのは断念しました。ご教授いただきありがとうございました。
m.ts10806

2018/07/07 00:10 編集

ローカルか自分で仮想環境立てて試してください。レンタルや他社サーバで大量データを試すのは迷惑をかけます。何かしらのペナルティをうけることもありますよ。
Analgesic

2018/07/07 00:18

そのあたりにも無知でした。ペナルティを受けたくはないので、今後は気をつけたいと思います。
Orlofsky

2018/07/07 00:29 編集

クラウドでSQLiteのパフォーマンス・テストをするとは思っていませんでした。汗
Analgesic

2018/07/07 00:30

お恥ずかしい(^^;
Orlofsky

2018/07/07 00:42

大量のINSERTをするコードは公開しても構わないもの想定します。ローカルで動作確認するのが難しければ、そのコードを新たな質問に載せて調査依頼をだされては?
Analgesic

2018/07/07 00:58

大量INSERTのコードを質問文に載せ、そのコードで誰か10万・100万・1000万で検索処理時間を調べてみて欲しい、と依頼するわけですね。そのうち自分でローカル環境用意して試してみようかとも思っていたのですが、そういう質問の仕方があるとは知りませんでした。どっちにするか検討してみます。
sazi

2018/07/07 02:04

自分で検証した上で、別環境ではどうかという質問ならなくは無いけど、丸投げ質問に受け取られないようには気を付けて下さい。
Analgesic

2018/07/07 02:14

この件で言えば、上記の調査依頼を質問に出すなら「クラウド環境で試したものの、容量制限でうまくいかず、ローカル環境を自分で準備することが難しいため」というような注意書きを付けないと、マナー違反で注意されてしまう可能性があるということですね。いろいろとありがとうございます。
guest

0

質問に対して水を差す回答ですが・・・

そもそも、性能に差が出たとして、「日本語は使えません、英数字のみの入力です」とかが可能な項目なんでしょうか?

もし、トランザクション系ではなく、マスター系のデータであるなら、コード化して数値とし、その数値で検索なら文字に対しての検索より早い事は確実です。

投稿2018/07/05 10:07

sazi

総合スコア25173

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

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

Analgesic

2018/07/07 00:08

一番早いのは数字ということですね。勉強になります。ありがとうございました。
sazi

2018/07/07 02:10

前提として、混在とするか英数字のみにするかの選択が可能な項目があるのかに興味があります。 はっきり言うと、そういう項目が無いなら無駄な検証をしているという事です。
Analgesic

2018/07/07 02:26

質問の趣旨としては、あくまで一般論としてどうなのかが知りたい、ということだったので、いろいろコメントをいただいたり、途中までとはいえ検証してみたりした結果、おおよそ「2バイト文字>(?)ASCII文字>>>数字」くらいなのかなという印象を持ちましたので、その点ではある程度質問の目的は果たせたと思っています。
Analgesic

2018/07/07 02:28

一応、私が今作っているWEBアプリに関して言えば、英数字のみに限定できるものです。
sazi

2018/07/07 03:10 編集

日本語環境で、英数字のみに限定できるものと言えば、体系立てられたものしかないので、元々混在は排他される限定的なものです。 結果的にその検証は、性能に差があれば、日本語入力する項目をローマ字で入力させるという選択しか生まないように思えるのです。 検証される姿勢は共感できます。ですが、言いたいのは、そこに有用さがあるかという事です。 もし、その有用さが共感できるものなら、協力される方は少なくはないでしょう。
sazi

2018/07/07 02:58

あくまで、一般論。と言われているのに、コメントしすぎたとちょっと反省しています。
Analgesic

2018/07/07 03:08

とんでもないです。いろいろご教授いただきありがとうございます<(_ _)>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問