You are here: Re: Count(*) Locking up things ... « MsSQL Server « IT news, forums, messages
Re: Count(*) Locking up things ...

Posted by Hugo Kornelis on 10/15/77 11:30

On 28 Oct 2005 09:13:07 -0700, csomberg@dwr.com wrote:

>SQL 2000
>
>I have inherited an application where many of the automated processes
>call a proc that simply returns the number of records with a NEW
>status.
>
>In watching the process in SQL, I see this ends up blocking a lot of
>processes - many like this are called every 5-30 seconds ...
>
>I wish to replace COUNT(*) with EXISTS if that will make things operate
>faster with no locks ...
>
>Thoughts ...
>
>Thanks everyone !!
>
>Craig

Hi Craig,

EXISTS will be faster than COUNT(*). It will still create locks, but
they'll last shorter.

That being said - if you need to know the number of rows with a NEW
status, then EXISTS won't do you any good. OTOH, if the current count is
only used to compare against 0 (i.e. to check whethere there are any NEW
rows or none), then changint to EXISTS is a no-brainer.

However, a far better performance gain would be the use of an index. If
your current query looks something like:

SELECT COUNT(*)
FROM SomeTable
WHERE Status = 'NEW'

Then adding the index below will speed it up tremendously, and probably
reduce your current blocking issues as well:

CREATE NONCLUSTERED INDEX YourIndex ON SomeTable(Status)

Best, Hugo
--

(Remove _NO_ and _SPAM_ to get my e-mail address)

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация