Re: Hints proposal

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 16 October 2006 10:36, Brian Hurt wrote:

> ... Therefor, any hints  feature *will* be used widely
> and in "inappropriate" circumstances. Protestations that
> this wasn't what the feature was meant for will fall on 
> deaf ears. 

I don't really care about this topic, as I've used Oracle and never 
actually made use of its hint system, but I liked knowing it was there.  
But what's better here, asking the optimizer to use what is tested with 
explain analyze to be a better plan, or to convolute a query so 
horribly it's hardly recognizable, in an effort to "trick" the 
optimizer?

Someone made a note earlier that any hints made irrelevant by optimizer 
improvements would probably need to be removed, citing that as a 
maintenence nightmare.  But the same point holds for queries that have 
been turned into unmaintainable spaghetti or a series of cursors to 
circumvent the optimizer.  Personally, I'd rather grep my code for a 
couple deprecated key-words than re-check every big query between 
upgrades to see if any optimizer improvements have been implemented.

Query planning is a very tough job, and SQL is a very high-level 
language, making it doubly difficult to get the intended effect of a 
query across to the optimizer.  C allows inline assembler for exactly 
this reason; sometimes the compiler is wrong about something, or 
experience and testing shows a better way is available that no compiler 
takes into account.  As such a high-level language, SQL is inherently 
flawed for performace tuning, relying almost entirely on the optimizer 
knowing the best path.  Here we have no recourse if the planner is just 
plain wrong.

I almost wish the SQL standards committee would force syntax for sending 
low-level commands to the optimizer for exactly this reason.  C has 
the "inline" keyword, so why can't SQL have something similar?  I 
agree, hints are essentially retarded comments to try and persuade the 
optimizer to take a different action... what I'd actually like to see 
is some way of directly addressing the query-planner's API and 
circumvent SQL entirely for really nasty or otherwise convoluted 
result-sets, but of course I know that's rather unreasonable.

C'mon, some of us DBAs have math degrees and know set theory... ;)

-- 

Shaun Thomas
Database Administrator

Leapfrog Online 
807 Greenwood Street 
Evanston, IL 60201 
Tel. 847-440-8253
Fax. 847-570-5750
www.leapfrogonline.com


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux