読者です 読者をやめる 読者になる 読者になる

countは非効率?

SQL

なんかPMがcountはテーブル全体を走査するから、行数0を判断するならtop 1使えとか言い出した。
そもそもtopはSQL Serverのみの機能というのは置いとくとしても、100万レコードのテーブルでcountでもtop 1でも瞬時に終わるんですが・・・
テーブル全体を〜、ってのもRDBMSをなめすぎてません?SQL ServerはB+木を使ってたはずだからO(N)ってわけじゃないっすよ。


そんな有意差が出るかどうかも怪しいところをどうこう言うより、データベースの設計見直してくれませんかね?
重複だらけでどこを信じていいのやら分からないのですが。


それと、ストアドプロシージャを使う理由が「速いから」と仰っていたのに、そのストアドの内部のループでDELETE投げるとか、正気ですか?
それなら

DELETE FROM SomeTable1 T
WHERE T.id IN (
    SELECT C.id From SomeTable2 C
)

とでもしたほうがよほどいいんじゃないでしょうか?え?WHEREの中でIN使うと遅い?いや、EXISTSに書き換えてもいいんですけどね、それより、ストアドの内部でDELETE何回も呼ぶほうがやばいですよ。


そもそも、ここ、あなたが自分でやるっていってたところなのに、なんで僕やらされてるんすか?え?そんなの関係ないからスケジュールどおり終わらせろ?
それをあんたが言うなよ(怒)