記入日: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化のディレクションなどを行っています。