MySQL 照合順序設定による検索結果の違い(1)

今回はデータベースを作成する際の照合順序設定によってどのように検索結果に影響を与えるかをシェアしたいと思います。

データベースの作成と照合順序の設定

新規にデータベースを作成する場合、下図のようにデータベースの名称を決定すると同時に「照合順序」をどれにするかプルダウンにて選択する必要があります。
下図の例(phpMyAdmin)では「utf8_general_ci」が「照合順序」として選択されています。

文字コードはマルチリンガルに対応した「utf8」を選択することが一般的ですが、「照合順序」の選択の違いにより検索結果に差異はでるのでしょうか。
今回は「照合順序」に「utf8_general_ci」を選択した場合と、「utf8_unicode_ci」を選択した場合について調べてみたいと思います。

今回検証用に以下の2つのデータベースを作成しました。

  • データベース名: u8gen(utf8_general_ci)
  • データベース名: u8uni(utf8_unicode_ci)

テスト用テーブルの作成

それぞれのデータベースにテスト用のテーブルの作成をおこないます。

データベース: u8gen に作成するテーブル

CREATE TABLE `test` (
  `name` varchar(128) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

データベース: u8uni に作成するテーブル

CREATE TABLE `test` (
  `name` varchar(128) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci


上記それぞれのテストテーブルに検索結果の比較検証用に以下のダミーレコードの流し込みをおこないます。

INSERT INTO `test` (`name`) VALUES ('にしだ');
INSERT INTO `test` (`name`) VALUES ('ニシダ');
INSERT INTO `test` (`name`) VALUES ('ニシダ');
INSERT INTO `test` (`name`) VALUES ('nishida');
INSERT INTO `test` (`name`) VALUES ('NISHIDA');


各テーブルでレコードのINSERTがおこなわれていることを確認します。

u8genで確認:

u8uniで確認:

次回は上記のレコードを使用して照合順序設定による検索結果の違いについて
確認をおこなっていきたいと思います。

木曜日担当:nishida



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム