![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
よく他のサイトなどで見かけるカテゴリ分けの際にそのカテゴリに属する件数を表示する際、下記のどような方法が賢いのでしょうか?
【例】
登録されている不動産データ(1万件前後とします)を県別でカテゴリ表示
・東京都(1,234)
・神奈川県(987)
というように表示をしたい。
【方法1:】
データを追加・変更をする時点で、変更前のカテゴリの個数から-1、変更後のカテゴリの個数に+1をしてUPDATEで変更する
【方法2:】
定期的にcronでカウントするプログラムを走らせる
⇒ただこの方法だと実際の件数とCronが走るまでの間に個数に差が発生してしまう問題がでてしまう。
【方法3:】
ページを読み込む際に、count(*)で数える
【方法1】で作っていましたあ2つのカテゴリにまたがる場合(東京都、神奈川県両方)もあり、このとき【方法1】での処理が難しく質問をさせて頂きました。
上記以外にも何か良いカテゴリ件数の表示方法がありましたらアドバイス頂けますと幸いです。
No.2ベストアンサー
- 回答日時:
> 都道府県47つの場合、各都道府県ごとにcountする形になりますでしょうか?
GROUP BY 句を使えば一度の実行で、データが存在する全ての都道府県のカウントが取得できますよ。
例)
SELECT no, COUNT(*) FROM Table GROUP BY no ORDER BY no;
http://www.atmarkit.co.jp/ait/articles/0012/22/n …
http://dev.mysql.com/doc/refman/5.1/ja/group-by- …
なお、パフォーマンスの問題は本番もしくはそれに順ずる環境で実際に測定してみないとハッキリしたことは分からないかと。
No.1
- 回答日時:
1件当りのデータ量やマシンスペックなどにもよりますが、1万件程度でしたら、方法3の毎回count(*)で値を取る方法で十分だと思いますよ。
都道府県のコード?が格納されているカラムにインデックスが貼ってあれば、余程の低スペックなマシンで無い限り、問題ないスピードで動くでしょう。
早速のご回答ありがとうございます。
さくらVPSを使っており処理的には問題なさそうです。
新たな質問となってしまいますが、都道府県47つの場合、各都道府県ごとにcountする形になりますでしょうか?
例)
Select count(*) from Table where no=1
(no=1~47までforで回す)
となるとページ読み込み毎にSQLがあ47回実行されてしまいますがパフォーマンスにさほど問題はないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
検索時にヒットしない
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Accessのフィールド数が255しか...
-
データがある場合のカラムの削除
-
FROM の中で CASE を使えるでし...
-
必須入力項目と入力必須項目
-
Access フォームのデータがテー...
-
importについて
-
ACCESS97のテーブルサイズについて
-
最近使った項目
-
Accessレコードの追加や変更が...
-
SELECT文でLEFT関数を使うと未...
-
PC-98でHDDに複数OSを入れる...
-
データベースの1要素に複数デー...
-
Accessでテーブル名やクエリ名...
-
Oracleのビュー作成時に「指定...
-
ACCESSで400以上のフィールドが...
-
セルの右クリックで出る項目を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
db2でisnumericは使えないので...
-
日本語のテーブル名、カラム名...
-
Accessから主キーの無いOracle...
-
検索時にヒットしない
-
DB設計に要する見積もりについて
-
「正規形」のよみかた
-
正規形のメリット&デメリット
-
ACCESS2000:主キーに半角と全...
-
第3正規化するかどうか
-
テーブル設計の際の縦持ちについて
-
データベースでの質問です。
-
ORACLEでダミー行を作成したい
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
Accessでテーブル名やクエリ名...
-
Oracle 2つのDate型の値の差を...
-
Access テキスト型に対する指定...
-
Accessでテーブルの値をテキス...
-
セルの右クリックで出る項目を...
おすすめ情報