• ベストアンサー

Accessでもっと早く探したい

Accessでもっと早く探す方法はないでしょうか? 郵便局のホームページにある全国の住所のデータ12万件を一つのテーブルに入れました。 http://www.post.japanpost.jp/zipcode/dl/kogaki.html ためしに、自分の住所を検索してみました。 かなり時間がかかりました。 これをもっと早く検索する方法は無いでしょうか? たとえば、テーブルの仕組みを変える等のやり方はないでしょうか? 手段は問いません。早ければどんな方法でもかまいません。 ちなみに、インデックスは付けてみました。

質問者が選んだベストアンサー

  • ベストアンサー
  • PPancho
  • ベストアンサー率27% (26/96)
回答No.1

a-z_A-Z さん 検索は郵便番号→住所 の検索でしょうか? 作成された郵便番号マスター?テーブルの郵便番号の項目に UNIQE INDEXを付与するのが手です。具体的には 1)ACCESSで該当のテーブルを選択してデザインボタンを押下 2)郵便番号の列を選択   画面下の標準タブにある   インデックス 「はい(重複なし)」にする   空文字列の許可 「いいえ」にする   値要求 「はい」 (ACCESS 2000/ACCESS XPのテーブルを前提にしています)

a-z_A-Z
質問者

お礼

ありがとうございます。 >インデックス 「はい(重複なし)」にする 元データに重複しているところがあったので、”重複なし”は選べませんでした。だから、”重複あり”にしました。 少し早くなりました。 データが多いので時間がかかるのはしょうがないと思いますが、Accessではこれが限度でしょうか?

a-z_A-Z
質問者

補足

>検索は郵便番号→住所 の検索でしょうか? ハイ、その通りです。

その他の回答 (4)

  • PPancho
  • ベストアンサー率27% (26/96)
回答No.5

a-z_A-Zさん Oracle8は会社の仕事でしたので。。。 リレーショナルDBで、検索先のテーブルが複数ある場合は、 テーブルの結合条件、検索条件であらかじめ作成してあるINDEXを 使用するようにSQL文を書き変えたり、Oracleの場合チューニングの プログラムを実行することでテーブルの全件検索が回避され、速度が 上がります。 念のためACCESSの「ツール」>「データベースの解析」> 「パフォーマンスの最適化」で対象となるテーブル、クエリー フォームなどにチェックをつけて検索すればパフォーマンス改善の ヒントが何か得られるかもしれませんが。 ただ、今回のように検索先が1テーブルで、かつ検索条件が1列 (郵便番号)の値のみである場合INDEXを付与できるのは1列だけ ですし、この場合はどのようなDBMSツールでも限界があります。 一般的に検索条件が2列(項目)以上ある場合は、INDEXを2項目 セットで付与したり、WHERE句の順番を変えることで検索速度が 変わります。 色々試して頑張ってみてください。

a-z_A-Z
質問者

お礼

いろいろありがとうございます。 どうも、今回の問題に対しては限界のようですね。 (パソコンのレベルを上げる等をのぞいて) PPancho様は専門家のようですね。 これからもお世話になると思います。 どうぞこれからもよろしくお願いいたします。

  • PPancho
  • ベストアンサー率27% (26/96)
回答No.4

a-z_A-Zさん 残念ながら小生はMySQLのことはわかりません。 (その昔 Oracle8ならかじったことはありますが。。。。) ただ、ACCESSからMysql上のテーブルをリンクできれば、 あとは実態がMysqlのテーブルでもACCESSからはACCESSの テーブルのように見えますので、クエリー、フォーム、レポート もできるのではないかと思います。 (ACCESSからODBCを使ってOracle8 DBに接続していました) もし、MySQLを極められるのなら別の形で質問してみて下さい。 (きっとMySQLの専門家の支援が得られるでしょう) a-z_A-Zさんの回答から直に自分でテーブルを検索していることが わかりました。これで遅いとなると解決は非常に難しいと思います。 ただ、そもそも今回の目的は日本全国の郵便・住所を必要とされているのでしょうか? クエリで特定の都道府県(地方)だけに絞って検索する手もあると思いますが。 また、大口以外の普通の郵便番号は市町村合併を除き、 IMEの漢字変換でもある程度サポートされていますが。。。  回答になっていなくてゴメンナサイ。

a-z_A-Z
質問者

お礼

ありがとうございます。 >(その昔 Oracle8ならかじったことはありますが。。。。) うらやましい・・・。わたしも、Oracleさわってみたいです。でもあれって値段が高いですよね。趣味では、さわる機会が無いです。 >直に自分でテーブルを検索していることが 実は、その後でクエリをつくり、フォームで検索をすると、結構早く検索されました。理由は不明です。テーブルから検索した方が、早いと考えていたのですが、実際は違いました。 >ただ、そもそも今回の目的は日本全国の郵便・住所を必要とされているのでしょうか? いえ、そう言うわけではありません。「もっと大量のデータでためしたいな~」「おっ、そういえば郵便局のデータがあったな♪」って感じでためしております。 もし、自分個人のデータならエクセルでも十分すぎます。(広告の裏にメモでじゅうぶんです。) もうそろそろ、この質問を締め切ろうかと考えています。 PPancho様のおかげで、この質問をした時に求めていたレベルには、ほぼ達しました。 しかし、これが限度なのでしょうか?たとえば、テーブルを分散させる等の方法はないでしょうか?(無いとは思いますが・・・) 以前、PostgreSQLの入ったサーバーを何台かつないで、データを処理する方法を見たので、それに似たことが出来ないかな?と、ふと思いました。 そもそも、Accessで高度なことを求めるのが間違っていますが・・・。 私は、趣味でデータベースをやっているので、このような無駄な事をしております。 以前、同じデータをMysqlだけでやりました。チューニングで何とかならないかと思って、いろいろ試しましたが、やればやるほど遅くなりました。結局、1.0秒の壁はどうしても破れませんでした。

  • PPancho
  • ベストアンサー率27% (26/96)
回答No.3

a-z_A-Zさん ACCESSで扱うデータはトランザクションレベルで10万件レベルが 運用の限界だという話を聞いたことがあります。それ以上ならば 他のDBMSツールを活用し、ACCESSは画面などフロントエンドの ところに限定すべきかもしれません。 ところでa-z_A-Zさんがいう検索とは、 どうやってやっていますか?方法により改良が可能 かもしれませんよ。

a-z_A-Z
質問者

お礼

ありがとうございます。 >ACCESSで扱うデータはトランザクションレベル Mysqlにつないで、Accessは画面だけを試したのですが、うまく検索できませんでした。 たぶん、文字コードあたりが原因だと思います。 まったく検索される気配がなく、ずっと待たされる状態がつづきます。 今、調査中なのですが、だんだんめんどくさくなってきて、Accessだけで出来ないものかと考えております。 >ところでa-z_A-Zさんがいう検索とは、 テーブルのフィールドを選択して、双眼鏡のアイコンをクリック(検索)を押して、そこにでてくる分に、郵便番号を入れて検索しています。 手違いで、フィールド名をちゃんと入れたテーブルを、削除してしまい、せっかく作ったフォームが無駄になりました。 又作り直すのが面倒なので、今は、テーブルのみの検索しかしていません。

  • PPancho
  • ベストアンサー率27% (26/96)
回答No.2

a-z_A-Zさん あまり期待できませんが、データベースの最適化をすることが できます。 ACCESSで該当のテーブルを選択して、「ツール」→「データベースユーティリティ」→「最適化/修復」を選択します。 あと郵便番号欄のデータ形式はテキスト型だと思いますが、 フィールドサイズは何桁(何バイト)に設定されていますか? 100-1234で8バイトならしかたありませんが、50バイトなら 8~10バイト程度に縮小したほうが余分なエリアを確保しないので。 ACCESSのバージョンにもよりますが、マスターとは言え10万件以上の データを扱うのはよほどパソコンのCPUとRAMがハイスペックでないと 難しいかと思います。

a-z_A-Z
質問者

お礼

ありがとうございます。 試してみましたが、速度は変わりませんでした。 >マスターとは言え10万件以上の とても大きな数だと思いますが、ある商品の在庫管理を想定すると、そんなに莫大な数字ではありません。 Accessって案外使い物になりませんね。

関連するQ&A

  • 郵便番号と住所の対応表

    現在住所録で使っている郵便番号と住所の対応表が 少し古いみたいなので最新版をDLしたいと思います。 添付画像のようなものが欲しいのですが、 下の郵便局のサイトからDLしたものは全然違うものでした。 http://www.post.japanpost.jp/zipcode/download.html 添付画像のようなデータはどこで入手できるのでしょう。

  • Opera Serch.iniに日本郵便を追加したいのですが。

    Opera Serch.iniに日本郵便(郵便番号検索と住所検索)を追加したいのですが。上手く行きません。ご存知の方教えて頂けませんか。 検索の追加では動きませんでした。 http://www.post.japanpost.jp/zipcode/index.html OS:VISTA Opera Ver9.23

  • 郵便番号検索システム

    ↓のような郵便番号検索システムを作ろうと思っています。 http://www.yu-bin.net/ データ(http://www.post.japanpost.jp/zipcode/dl/oogaki.html)をDBに取り込むことは出来ましたが、カテゴリわけなどどのようにすればいいのかが疑問です… 参考URLなどありましたら教えていただければ嬉しいです。

    • ベストアンサー
    • PHP
  • 郵便配達 日数検索について

    http://www.post.japanpost.jp/deli_days/index.html こちらで郵便の日数を検索しました。 これは指定した住所までに届くまでの日数なのか、郵便局の支店に届く日数なのでしょうか。 例えば24日午前にこちらの郵便局支店に差し出して、翌々日に○○支店に届くと出た場合、その日(26日)のうちに記載した住所まで届けてくれるのですか?

  • 石川県金沢市の住所について

    http://www.post.japanpost.jp/zipcode/dl/oogaki.html から、全国の郵便番号などが収められたCSVがダウンロードできるのですが(ken_all.lzh)、 その中で石川県金沢市の住所に、 大桑町(ア、イ、ヰ、ウ、上野、ヲ、オ乙、鐘搗山、上川原、上猫下、 などと書かれてある部分がありますが、 これは誤植ではなく正しいものでしょうか?

  • 竹島の郵便番号についての質問です。

    郵便番号検索にて 竹島の郵便番号が検索されません。 郵便局のこのサイトで竹島の郵便番号が検索できないのは手抜かりではありませんか? 実際は、〒685-0000 島根県 隠岐郡 隠岐の島町 竹島ですよね。 http://www.post.japanpost.jp/cgi-zip/zipcode.php?pref=32&city=1325280&cmp=1

  • 郵政省の郵便番号を取り込みたい(MySQL)

    MySQLは使い出したばっかりです。 いろいろなサイトを参考に、 データベース、テーブル、フィールドの作成、SELECT、UPDATE文等は、一通り使ってみたのですが、 大きなデータベースから検索等をしたいと思い、郵政省のダウンロードしたCSVからMySQLにインポートしたいと思います。 http://www.post.japanpost.jp/zipcode/download.html 13104,"160 ","1600005","トウキョウト","シンジュクク","アイズミチョウ","東京都","新宿区","愛住町",0,0,0,0,0,0 のように、ダブルクォートで囲まれており、 CSVファイル内には、フィールド名はありません。 フィールドに関しては、 http://www.post.japanpost.jp/zipcode/dl/readme.html に掲載されています。 これをインポートして、Mysqlのtestデータベースの、zip_codeというテーブルを作ろうと思います。 この場合、どういった順序で作業をすれば、データベースにすることができますでしょうか? コマンドラインで行おうと思います。 フィールドの定義は先に行っていなければならないのでしょうか?フィールドの定義が終わってから、なにかしらのコマンドで、データベースに流し込むことができるのでしょうか?

    • ベストアンサー
    • MySQL
  • 冊子小包郵便物って・・・

    冊子小包郵便物って1個からでも出せるのでしょうか? 郵便局のホームページを見ても、 注意書きにいろいろ書かれていてよく分かりませんでした。。 http://www.post.japanpost.jp/fee/simulator/kokunai/index.html 中身が見えるように切り込みを入れるんですよね・・・? 詳しい方、教えてください。

  • 郵送料のことについて

    http://www.post.japanpost.jp/service/parcel/sasshi/index.html この冊子小包郵便というのは3kgまでの荷物なら、日本国内に送るのであれば全国一律で590円で送れるということでしょうか

  • フォームの履歴を残す設定を教えてほしいのです

    郵便局から商品などを発送することが多いので、お客様に受け取っていただいたかどうか、郵便局のサイトで確認します。 そのとき、「郵便・荷物の追跡」という検索窓に、荷物の番号を入力するのですが、その番号を残す方法を知りたいのです。どのような設定をすればいいのかご存知の方いらっしゃいましたらご指導ください。ブラウザはedgeを使っています。 なぜ番号を残したいのかというと、お客様が配達時受け取っていただいていないことがあるからです。数日後、確認するとき、また番号を入れるのは面倒なもので。 以前は、番号が残っていたのですが、なぜか今は入力後、ページを戻ると消えてしまうのです。 ちなみに、郵便局の「郵便・荷物の追跡」は、下記のページのことです。宜しくお願いいたします。 https://www.post.japanpost.jp/index.html

専門家に質問してみよう