記入日:2023-01-02 編集日:2023-01-02
SQL見るだけクエリ。今回は全国12万件の郵便番号データをテーブルに保存し、このテーブルから条件に合わせてデータを取得する際のスピード感を味わってみようと思います。
この記事を読むと(約5分)
10〜20万件程度のデータから、どのくらいのスピードで条件に合わせたレコードを抽出できるか体験できます。
このページは、全国12万件の郵便番号データのうち、住所が赤坂のレコードのみを抽出しております。結果はこのページ最下部に表記しております。
さていつもの様に、テーブルの情報を取得するSQLに関して、注目する部分は、以下の9~10行目のみです。
SELECT postal7, pref, city, address FROM postal_code WHERE address LIKE "赤坂" この部分で、データベース内にあるpostal_codeテーブルのうち、addressの欄に【赤坂】と記載されている郵便番号を取得しています。
全124,562中24件が適応しました。ちなみに赤坂を含む文字だとまだまだたくさんありますので、今回は、前後にその他の文字列を含むものは対象外にしています。
このページを更新するたびに、同様の取得が行われます。その際にHTMLが生成される時間も含まれるため、お使いの環境によって少し時間がかかるかもしれませんが、単純なデータベースの処理スピードとしては、0.0556秒ほどかかりました。
try {
include_once '../model/class.php';
// データベース接続
$database = new Database();
$db = $database->connect();
// SQLを準備し、パラメータをバインドする
$query = 'SELECT postal7, pref, city, address FROM postal_code
WHERE address LIKE "赤坂"';
$stmt = $db->prepare($query);
// 実行する
$stmt->execute();
// 結果を取得する
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
// データベースから切断する
$database->disconnect();
} catch(PDOException $e) {
echo $e->getMessage();
}
これを実行すると、二次元連想配列で、取得することができます。
Array
(
[0] => Array
(
[postal7] => 0300956
[pref] => 青森県
[city] => 青森市
[address] => 赤坂
)
[1] => Array
(
[postal7] => 0360537
[pref] => 青森県
[city] => 黒石市
[address] => 赤坂
)
[2] => Array
(
[postal7] => 0393116
[pref] => 青森県
[city] => 上北郡野辺地町
[address] => 赤坂
)
[3] => Array
(
[postal7] => 0391561
[pref] => 青森県
[city] => 三戸郡五戸町
[address] => 赤坂
)
[4] => Array
(
[postal7] => 9893211
[pref] => 宮城県
[city] => 仙台市青葉区
[address] => 赤坂
)
[5] => Array
(
[postal7] => 9850055
[pref] => 宮城県
[city] => 塩竈市
[address] => 赤坂
)
[6] => Array
(
[postal7] => 9880075
[pref] => 宮城県
[city] => 気仙沼市
[address] => 赤坂
)
[7] => Array
(
[postal7] => 0130064
[pref] => 秋田県
[city] => 横手市
[address] => 赤坂
)
[8] => Array
(
[postal7] => 9691633
[pref] => 福島県
[city] => 伊達郡桑折町
[address] => 赤坂
)
[9] => Array
(
[postal7] => 9601465
[pref] => 福島県
[city] => 伊達郡川俣町
[address] => 赤坂
)
[10] => Array
(
[postal7] => 9637753
[pref] => 福島県
[city] => 田村郡三春町
[address] => 赤坂
)
[11] => Array
(
[postal7] => 3091616
[pref] => 茨城県
[city] => 笠間市
[address] => 赤坂
)
[12] => Array
(
[postal7] => 3111241
[pref] => 茨城県
[city] => ひたちなか市
[address] => 赤坂
)
[13] => Array
(
[postal7] => 3770417
[pref] => 群馬県
[city] => 吾妻郡中之条町
[address] => 赤坂
)
[14] => Array
(
[postal7] => 2860017
[pref] => 千葉県
[city] => 成田市
[address] => 赤坂
)
[15] => Array
(
[postal7] => 9391751
[pref] => 富山県
[city] => 南砺市
[address] => 赤坂
)
[16] => Array
(
[postal7] => 3840011
[pref] => 長野県
[city] => 小諸市
[address] => 赤坂
)
[17] => Array
(
[postal7] => 6780021
[pref] => 兵庫県
[city] => 相生市
[address] => 赤坂
)
[18] => Array
(
[postal7] => 6893111
[pref] => 鳥取県
[city] => 西伯郡大山町
[address] => 赤坂
)
[19] => Array
(
[postal7] => 8020032
[pref] => 福岡県
[city] => 北九州市小倉北区
[address] => 赤坂
)
[20] => Array
(
[postal7] => 8100042
[pref] => 福岡県
[city] => 福岡市中央区
[address] => 赤坂
)
[21] => Array
(
[postal7] => 8200106
[pref] => 福岡県
[city] => 飯塚市
[address] => 赤坂
)
[22] => Array
(
[postal7] => 8380222
[pref] => 福岡県
[city] => 朝倉郡筑前町
[address] => 赤坂
)
[23] => Array
(
[postal7] => 8440024
[pref] => 佐賀県
[city] => 西松浦郡有田町
[address] => 赤坂
)
)
| postal7 | pref | city | address |
|---|---|---|---|
| 0300956 | 青森県 |
青森市 |
赤坂 |
| 0360537 | 青森県 |
黒石市 |
赤坂 |
| 0393116 | 青森県 |
上北郡野辺地町 |
赤坂 |
| 0391561 | 青森県 |
三戸郡五戸町 |
赤坂 |
| 9893211 | 宮城県 |
仙台市青葉区 |
赤坂 |
| 9850055 | 宮城県 |
塩竈市 |
赤坂 |
| 9880075 | 宮城県 |
気仙沼市 |
赤坂 |
| 0130064 | 秋田県 |
横手市 |
赤坂 |
| 9691633 | 福島県 |
伊達郡桑折町 |
赤坂 |
| 9601465 | 福島県 |
伊達郡川俣町 |
赤坂 |
| 9637753 | 福島県 |
田村郡三春町 |
赤坂 |
| 3091616 | 茨城県 |
笠間市 |
赤坂 |
| 3111241 | 茨城県 |
ひたちなか市 |
赤坂 |
| 3770417 | 群馬県 |
吾妻郡中之条町 |
赤坂 |
| 2860017 | 千葉県 |
成田市 |
赤坂 |
| 9391751 | 富山県 |
南砺市 |
赤坂 |
| 3840011 | 長野県 |
小諸市 |
赤坂 |
| 6780021 | 兵庫県 |
相生市 |
赤坂 |
| 6893111 | 鳥取県 |
西伯郡大山町 |
赤坂 |
| 8020032 | 福岡県 |
北九州市小倉北区 |
赤坂 |
| 8100042 | 福岡県 |
福岡市中央区 |
赤坂 |
| 8200106 | 福岡県 |
飯塚市 |
赤坂 |
| 8380222 | 福岡県 |
朝倉郡筑前町 |
赤坂 |
| 8440024 | 佐賀県 |
西松浦郡有田町 |
赤坂 |
青森県と福岡県に、赤坂という地名が多いんですね。共に4件ずつありました。
SQLの使いどころ
サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。
SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。
また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。
KK
機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。