Hi Malcolm, Thanks for great explanation :)
On Thu, Aug 19, 2010 at 4:53 PM, Malcolm Burtt < malcolm.bu...@touchstone.co.uk> wrote: > > > Hi > > > > There’s probably not much to choose between them but… > > > > If there are lots of records with the same value for field1 then the > database will need to scan through lots of index leaf nodes to reach all of > the records that you want to select. Since the leaf nodes for itemIdx will > be smaller than the leaf nodes for numIdx there will be more leaf nodes per > page which means that the database might need to read fewer index pages as > it scans through all the nodes with the field1 value that you’re selecting > and so will generate less I/O using this index. > > > > Having said all that, the optimiser is almost certainly smart enough to > know this and will pick itemIdx anyhow and if that’s the case then it makes > little since to add the index hint. The only caveat on this is that AX is > probably parameterising this query to make it reusable (i.e. allow different > values of _field1 to use the same query plan). This means that the optimiser > will take an “on average” view of the number of leaf nodes that have the > same value for field1 which is fine if you have a roughly even spread of > values for field1 but if the field1 value distribution is actually skewed > towards one or two of the possible values then the “on average” view might > not produce the best plan and this is the point where you would step in and > use a query hint to push the optimiser into picking a specific plan. > > > > Malcolm > > > > *From:* Axapta-Knowledge-Village@yahoogroups.com [mailto: > axapta-knowledge-vill...@yahoogroups.com] *On Behalf Of *thomas 'znal' > ramdhan > *Sent:* 19 August 2010 03:12 > *To:* Axapta-Knowledge-Village@yahoogroups.com > *Subject:* Re: [Axapta-Knowledge-Village] when to use Index and index hint > > > > > > Hi Malcolm, > > From above question, I'd like to ask another question which related to > indexhint. > Let's say I need to query to tableA which field criteria is field1. > > select * from tableA where tableA.field1 = _field1 > > indexs for table A are below > > 1. NumIdx > field1 > field2 > field3 > > 2. ItemIdx > field1 > field3 > > In best practice, which index should I use ? > > Thanks and Regards, > Afin > > On Wed, Aug 18, 2010 at 6:53 PM, Malcolm Burtt < > malcolm.bu...@touchstone.co.uk> wrote: > > > > Hi > > > > For most queries, the answer is to use neither. > > > > “Index Hint” overrides the SQL Query optimiser and forces the use of the > specified index – which is ok if you’re sure that the optimiser is picking a > bad query plan and that using “index hint” allows your query to run faster > but most of the time the optimiser is better at picking the right index than > you are so you should let it do its job. When you do need to tune the query > you should consider other hints (e.g. forcenestedloop, etc) alongside “index > hint” to get the most effective query plan for your data. > > > > I can’t think of a good reason to use “Index” at all. It simply ensures > that the data is returned sorted in the index order which you can already > achieve with the “Order By” clause with the important advantage that the > sort order would not change if someone altered the index definition in some > way. > > > > Regards > > > > > > Malcolm Burtt > > Touchstone Group > > People - Partnership - Solutions > > > > > > > > > -- > ne faites pas une limite pour votre competence > ------------------------------------------------------------------------- > bilden Sie nicht eine Begrenzung fur Ihre Fahigkeit > ------------------------------------------------------------------------- > non faccia un limite per la vostra abilita > ------------------------------------------------------------------------- > --(-@ > > > -- ne faites pas une limite pour votre competence ------------------------------------------------------------------------- bilden Sie nicht eine Begrenzung fur Ihre Fahigkeit ------------------------------------------------------------------------- non faccia un limite per la vostra abilita ------------------------------------------------------------------------- --(-@