Click here to Skip to main content
16,005,236 members
Home / Discussions / Database
   

Database

 
GeneralRe: Slow query when using @variable in Where clause Pin
Wendelius27-Jan-09 8:36
mentorWendelius27-Jan-09 8:36 
GeneralRe: Slow query when using @variable in Where clause Pin
Meysam Mahfouzi27-Jan-09 9:09
Meysam Mahfouzi27-Jan-09 9:09 
GeneralRe: Slow query when using @variable in Where clause Pin
Wendelius27-Jan-09 9:34
mentorWendelius27-Jan-09 9:34 
GeneralRe: Slow query when using @variable in Where clause [modified] Pin
Meysam Mahfouzi27-Jan-09 20:40
Meysam Mahfouzi27-Jan-09 20:40 
GeneralRe: Slow query when using @variable in Where clause Pin
Wendelius27-Jan-09 20:49
mentorWendelius27-Jan-09 20:49 
GeneralRe: Slow query when using @variable in Where clause Pin
Meysam Mahfouzi27-Jan-09 21:02
Meysam Mahfouzi27-Jan-09 21:02 
GeneralRe: Slow query when using @variable in Where clause Pin
Wendelius27-Jan-09 21:28
mentorWendelius27-Jan-09 21:28 
GeneralRe: Slow query when using @variable in Where clause Pin
Meysam Mahfouzi27-Jan-09 22:41
Meysam Mahfouzi27-Jan-09 22:41 
Dear Mika,

Adding the following index:
CREATE INDEX X_Test ON News (Culture, Date DESC);

didn't solve the problem. But after I disabled the index which only was on Date column, both queries ran very fast. (that is, disabling an index apparently solved the problem). The index containing the two columns (Culture, Date) was not being used as long as there was an index on Date column.

So now, this query runs very fast for both @c = 0 and @c = 1

DECLARE @Start INT, @Count INT

SET @Start = 1
SET @Count = 5

DECLARE @c TINYINT
SET @c = 1;

WITH paging AS (
	SELECT id, title, [description], ROW_NUMBER() OVER (ORDER BY Date DESC) rownum
	FROM News
	WHERE Culture = @c
)
SELECT * FROM paging WHERE rownum BETWEEN @Start AND (@Start + @Count - 1)


But it turned out to be a temporary cause of happiness! If I start changing the value of @start parameter, things will start to change. When @c is set to 1, the query runs very fast for the following @start values:
1, 10, 100, 1000, 10,000

But when I set @start to 100,000, the query become a long-running one (It took 2:27 mins to execute).
After executing the query again (with @start set to 100,000) it executed very fast (probably due to previous execution). Now when I set @start to 200,000 again it goes to sleep...

When @c is set to 0, it will execute very fast for any value of @start variable.

Regarding your question about Date column: As I told you, I've inserted 1,500,000 rows randomly into News table. Therefor, even though the ID column is an incrementing Identity column, the Date is not necessary greater for greater ID columns. In the real-world running database though, the Date value is greater for greater ID columns for sure.

Here is the execution plan of my query with the new two-column index: look[^]

and here is the execution plan for your query: look[^]

** p.s. I also noted that the order of columns in Index is important in this case. If I move the Culture to become the second column in index, the index becomes of no use.
GeneralRe: Slow query when using @variable in Where clause Pin
Wendelius27-Jan-09 22:59
mentorWendelius27-Jan-09 22:59 
GeneralRe: Slow query when using @variable in Where clause Pin
Meysam Mahfouzi27-Jan-09 23:11
Meysam Mahfouzi27-Jan-09 23:11 
GeneralRe: Slow query when using @variable in Where clause Pin
Wendelius27-Jan-09 23:23
mentorWendelius27-Jan-09 23:23 
GeneralRe: Slow query when using @variable in Where clause Pin
Meysam Mahfouzi27-Jan-09 23:59
Meysam Mahfouzi27-Jan-09 23:59 
GeneralRe: Slow query when using @variable in Where clause Pin
Wendelius28-Jan-09 0:21
mentorWendelius28-Jan-09 0:21 
GeneralRe: Slow query when using @variable in Where clause Pin
Meysam Mahfouzi28-Jan-09 1:07
Meysam Mahfouzi28-Jan-09 1:07 
GeneralRe: Slow query when using @variable in Where clause Pin
Wendelius28-Jan-09 1:19
mentorWendelius28-Jan-09 1:19 
GeneralRe: Slow query when using @variable in Where clause Pin
Meysam Mahfouzi28-Jan-09 1:53
Meysam Mahfouzi28-Jan-09 1:53 
GeneralRe: Slow query when using @variable in Where clause Pin
Wendelius28-Jan-09 2:13
mentorWendelius28-Jan-09 2:13 
GeneralRe: Slow query when using @variable in Where clause Pin
Meysam Mahfouzi28-Jan-09 2:56
Meysam Mahfouzi28-Jan-09 2:56 
GeneralRe: Slow query when using @variable in Where clause Pin
Wendelius28-Jan-09 3:12
mentorWendelius28-Jan-09 3:12 
GeneralRe: Slow query when using @variable in Where clause Pin
Meysam Mahfouzi28-Jan-09 3:31
Meysam Mahfouzi28-Jan-09 3:31 
GeneralRe: Slow query when using @variable in Where clause Pin
Wendelius28-Jan-09 4:16
mentorWendelius28-Jan-09 4:16 
GeneralRe: Slow query when using @variable in Where clause Pin
Meysam Mahfouzi28-Jan-09 4:38
Meysam Mahfouzi28-Jan-09 4:38 
GeneralRe: Slow query when using @variable in Where clause Pin
Wendelius28-Jan-09 4:51
mentorWendelius28-Jan-09 4:51 
GeneralRe: Slow query when using @variable in Where clause Pin
Meysam Mahfouzi24-Jun-09 20:46
Meysam Mahfouzi24-Jun-09 20:46 
Questionsql server group Pin
Nath26-Jan-09 17:36
Nath26-Jan-09 17:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.