Home > Archive > MS SQL Server > December 2005 > Proper indexs against query and optimization









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Proper indexs against query and optimization
Kay

2005-12-28, 9:23 am

Viewing trace following query gives Duration - 517470

Which indexes should be created on tables and how to make this query
optimized.

====================
====================
===============
SELECT top 1 package_description.name,
package_description.tier,
package_description.pid

FROM package_description
inner join package on package_description.pid = package.package_id
inner join courses on package.course_id = courses.id
inner join commission on package_description.pid =
commission.package_id
inner join cinfo on commission.owner_id = cinfo.cid

WHERE (courses.id = 45448) and
(cinfo.cid = 121) and
(package_description
.type <> 2)

and package_description.state_id = 41

ORDER BY package_description.available ASC

====================
====================
=================


TIA
Kay


tomer

2005-12-28, 8:23 pm

hi,

check your indexes and see if you are using them properly at your join
tables. may be you also need to open an execution plan and see at which step
your query is taking most precentage. also may be you should also defragment
or reubild your indexes after checking the showcontig (focus on the log and
extent results).

thx,

Tomer

"Kay" wrote:

> Viewing trace following query gives Duration - 517470
>
> Which indexes should be created on tables and how to make this query
> optimized.
>
> ====================
====================
===============
> SELECT top 1 package_description.name,
> package_description.tier,
> package_description.pid
>
> FROM package_description
> inner join package on package_description.pid = package.package_id
> inner join courses on package.course_id = courses.id
> inner join commission on package_description.pid =
> commission.package_id
> inner join cinfo on commission.owner_id = cinfo.cid
>
> WHERE (courses.id = 45448) and
> (cinfo.cid = 121) and
> (package_description
.type <> 2)
>
> and package_description.state_id = 41
>
> ORDER BY package_description.available ASC
>
> ====================
====================
=================
>
>
> TIA
> Kay
>
>
>

Ryan Powers

2005-12-28, 8:23 pm

Its tough to tell you without more information about these tables, their keys
and the relationships between them (and the execution plan). Also, from the
looks of the join it appears that your model is potentially de-normalized,
this adds another potential issue.

But, from what you have listed.

A good starting point is the following (these are not always true, but a
good starting point)
1) Make sure all the tables have a primary key
2) Set the primary key as clustered
3) Create a non-clustered index on the foreign keys

So, in your case

indexes for package_description
ON pid PK clustered
ON state_id, type, available NonClustered

indexes for package
ON package_id PK Clustered
ON course_id NonClustered

index for courses
id PK Clustered

index for commission
package_ID PK clustered
owner_id nonclustered

index cinfo
cid PK Clustered



Be forewarned, this is a bit of a blind guess. But, it will hopefully get
you started in the right direction. The root of your issue could very well
be outside of just index creation, and might be related to your schema itself.

HTH


"Kay" wrote:

> Viewing trace following query gives Duration - 517470
>
> Which indexes should be created on tables and how to make this query
> optimized.
>
> ====================
====================
===============
> SELECT top 1 package_description.name,
> package_description.tier,
> package_description.pid
>
> FROM package_description
> inner join package on package_description.pid = package.package_id
> inner join courses on package.course_id = courses.id
> inner join commission on package_description.pid =
> commission.package_id
> inner join cinfo on commission.owner_id = cinfo.cid
>
> WHERE (courses.id = 45448) and
> (cinfo.cid = 121) and
> (package_description
.type <> 2)
>
> and package_description.state_id = 41
>
> ORDER BY package_description.available ASC
>
> ====================
====================
=================
>
>
> TIA
> Kay
>
>
>

Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com