[前][次][番号順一覧][スレッド一覧]

mysql:15220

From: <sydney@xxxxxxxxxx>
Date: Thu, 25 Mar 2010 13:53:58 +1100
Subject: [mysql 15220] Re: レコードの存在チェック

坂本と申します。

ご質問の回答は出来ませんが、ロジック的に考えてみました。
id はプライマリーキーですか?
ユニークなキーな場合、そもそもCOUNTの必要はないと思います。
もし、idがユニークではない場合は、COUNTが正しいかと思います。
私もどちらが正しいとか適正だとかは分かりませんが、データの意味的な
ことで言えば、上記の住み分けになるような気がします。

ポイントはWHEREで利用するカラムがindexテーブル上でどうなっているか
だと思います。

以上です。


----- Original Message ----- 
From: "Hiroshi Hashibata" <hashibata@xxxxxxxxxx>
To: <ml@xxxxxxxxxx>
Sent: Thursday, March 25, 2010 1:05 PM
Subject: [mysql 15219] レコードの存在チェック


> 橋端と申します。
>
> InnoDBのテーブルにレコードが存在するかを
> 確認する方法について質問させていただきます。
>
> これまでは
> #1
> SELECT COUNT(*) FROM tableA WHERE id = xxxx;(xxxxは指定したID)
> としてプログラムに返った値に件数があるか0かで判断してきました。
>
> しかし先日の案件で上のコードは
> 上位のプログラマによって下記のコードに直されました。
>
> #2
> SELECT id FROM tableA WHERE id = xxxx;
> 返されたResult[0]のidに値が入っているか空かで判断。
>
> 変更理由を聞いたところ
> ・tableAは頻繁に更新されるため#1のクエリーがたくさんプロセステーブルに残っている時がある
> ・MySQLはよく分からないが、前のオラクル案件では*はNGだった
> ・tableAの更新頻度は変えられないため、苦肉の策
> ということでした。
>
> そこで疑問に思ったのですが2点あります。
> (1)#1はWHEREで該当するIDのレコードを選び出し、COUNTでその件数を数えるというクエリですよね。
>   *からカラム名に変えることでMySQLの動作はどう変わりますか?
> (2)InnoDBは行レベルロックなのでtableAの更新中に#1のレコードが止まるということは
>   同じレコードの更新/読み込みが発生しているからでは?だとしたら#2も同じではないか。
>
> 既に#2に変更はしたのですが
> 自分の疑問を晴らすために
> 皆様のお返事をお待ちしています。
>
>
> 


[前][次][番号順一覧][スレッド一覧]

     15219 2010-03-25 11:05 [Hiroshi Hashibata <h] レコードの存在チェック                  
->   15220 2010-03-25 11:53 ┗[<sydney@xxxxxxxxxx> ]                                       
     15221 2010-03-25 12:15  ┗[Hiroshi Hashibata <h]                                     
     15222 2010-03-25 12:25   ┣[Mikiya Okuno <Mikiya]                                   
     15223 2010-03-25 12:26   ┣[Akio Imai <suzuro204] Re: [mysql 15221] Re: レコードの存在チェック
     15224 2010-03-25 13:09   ┃┣[Mikiya Okuno <Mikiya] Re: レコードの存在チェック      
     15226 2010-03-25 13:20   ┃┗[宮田 昌紀 <moyata@xx] Re: レコードの存在チェック      
     15227 2010-03-25 14:39   ┃ ┗[Akio Imai <suzuro204] Re: [mysql 15226] Re: レコードの存在チェック
     15228 2010-03-25 17:02   ┃  ┗["Tadayuki Abraham HA] MySQLの公共システムへの利用率について
     15225 2010-03-25 13:12   ┗["EBIHARA, Yuichiro" ]