Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 Development Tools
 ASP.NET
 SQL Query Optimization

Author  Topic 

Apollyonx83x
Starting Member

3 Posts

Posted - 2010-01-27 : 12:38:58
[code]comm.CommandText =

"SELECT DISTINCT a.MANAGER_USERID, (b.LASTNAME+ ', ' + b.FIRSTNAME + ' ' + ISNULL(b.MIDDLENAME, N'')) AS Name
FROM EmployeeData AS a INNER JOIN EmployeeData AS b ON a.MANAGER_USERID = b.USERID
ORDER BY NAME";[/code]

Is there anything I could do to this query to improve the speed of it? Right now, its taking about 13 seconds to run the query, it returns 8019 out of 89664 rows.

(Criteria returned is correct, but the delay is horrid.)

I have tried a Union without the ISNULL, which presented no difference in speed.

Thank you in advance for your help.

To inform you what I'm doing I have a Table of Employee Data, and am filtering a Manager Listing based on Drop Down Selections, All work fine except this Query, and when I run it in the SQL Server Management Studio or on my ASP.NET page, it delays for 13 seconds.

visakh16
Very Important crosS Applying yaK Herder

52326 Posts

Posted - 2010-01-27 : 12:44:37
what all indexes you've on table? are statistics updated?
Go to Top of Page

Apollyonx83x
Starting Member

3 Posts

Posted - 2010-01-27 : 12:56:45
quote:
Originally posted by visakh16

what all indexes you've on table? are statistics updated?



Indexes? None. I have read-only access.
Go to Top of Page

visakh16
Very Important crosS Applying yaK Herder

52326 Posts

Posted - 2010-01-27 : 12:59:00
quote:
Originally posted by Apollyonx83x

quote:
Originally posted by visakh16

what all indexes you've on table? are statistics updated?



Indexes? None. I have read-only access.


you need to have indexes for speeding up data retrieval
Go to Top of Page

Apollyonx83x
Starting Member

3 Posts

Posted - 2010-01-27 : 13:01:56
Syntax-wise, it is as efficient as it can be?

Also, what would I be indexing? Just the Manager_UserID? or all the columns I use? in WHERE statements, and what not?
Go to Top of Page

Kristen
Test

22859 Posts

Posted - 2010-01-27 : 14:19:24
Generally all columns used in the WHERE and in any JOINs. But its a broad subject, so general advice like that is ... just "general". If it was as simple as "just do this" I'm sure MS would ahve made SQL do it for you, and you wouldn't have to do anything .

You could have indexes that "cover" the query, for example; or filtered indexes; indexes on VIEWs; indexes to partition the table ... all sorts in fact to improve performance.

But if you have NO indexes at present then just some indexes on the basics will improve the performance hugely.
Go to Top of Page

Kristen
Test

22859 Posts

Posted - 2010-01-27 : 14:21:11
SQL has an Index Advisor Wizard (I haven't used it, so not sure of exact name), That can analyse your queries and advise on best-indexes to create.
Go to Top of Page

Kristen
Test

22859 Posts

Posted - 2010-01-27 : 14:23:08
"Syntax-wise, it is as efficient as it can be?"

I'm never happy to see DISTINCT in the query, normally means that a JOIN is pulling in multiple rows and could be corrected so as to not do that. DISTINCT means "Get all rows, sort them, remove duplicates" which is obviously more work than "Get all rows"
Go to Top of Page
   

- Advertisement -