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

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

ただいまの
回答率

90.34%

  • SQL

    2539questions

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

  • SQLite

    665questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 257

Analgesic

score 6

 前提・実現したいこと

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

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

データベースA

fruit price
りんご 150
みかん 50
なし 200

データベースB

fruit price
ringo 150
mikan 50
nasi 200

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Analgesic

    2018/07/05 18:08 編集

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

    キャンセル

  • sazi

    2018/07/05 18:23 編集

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

    キャンセル

  • mts10806

    2018/07/05 19:34

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

    キャンセル

回答 2

checkベストアンサー

+7

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/05 17:31 編集

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

    キャンセル

  • 2018/07/05 17:33

    それは良い考え。

    キャンセル

  • 2018/07/05 18:09

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

    キャンセル

  • 2018/07/07 09:07

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

    キャンセル

  • 2018/07/07 09:10 編集

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

    キャンセル

  • 2018/07/07 09:18

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

    キャンセル

  • 2018/07/07 09:29 編集

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

    キャンセル

  • 2018/07/07 09:30

    お恥ずかしい(^^;

    キャンセル

  • 2018/07/07 09:42

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

    キャンセル

  • 2018/07/07 09:58

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

    キャンセル

  • 2018/07/07 11:04

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

    キャンセル

  • 2018/07/07 11:14

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

    キャンセル

+5

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/07 09:08

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

    キャンセル

  • 2018/07/07 11:10

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

    キャンセル

  • 2018/07/07 11:26

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

    キャンセル

  • 2018/07/07 11:28

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

    キャンセル

  • 2018/07/07 11:46 編集

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

    キャンセル

  • 2018/07/07 11:58

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

    キャンセル

  • 2018/07/07 12:08

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

    キャンセル

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

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • SQL

    2539questions

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

  • SQLite

    665questions

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

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