Optimizers work on a thirty percent rule. If the resultset will contain thirty
percent of the table then a table scan will be performed. If you want to
`force` the use of an index you can use the `USE INDEX <index-name>` syntax.
You also should look at your query. You have three criteria in your where clause
id=2809
dtime>FROM_UNIXTIME(1073970000)
dtime<=FROM_UNIXTIME(1076734799)
A compound index containing id and dtime should be created.
Can you use a BETWEEN statement?
WHERE id = 2809 AND ( dtime BETWEEN start AND stop)
...
Also what is the sum of your `>` and `<=` resultsets? This value may be larger
than you expect.

  On Wed, 24 Mar 2004,
Jack Coxen wrote: > 
> Is there a way of changing what it believes?  The resultset size is only
> a few thousand lines.  
> 
> And, btw, why does it believe that a table scan is more efficient than
> using an index? 
> 
> Jack 
> 
> -----Original Message----- 
> From: Victor Pendleton [ mailto:[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]> ] 
> Sent: Wednesday, March 24, 2004 12:24 PM 
> To: Jack Coxen; MySQL List (E-mail) 
> Subject: Re: Index not functioning 
> 
> 
> The optimizer is informing you that `it` believes a table scan is more 
> efficient than using an index due to the resultset size. 
> 
>  On Wed, 
> 24 Mar 2004, Jack Coxen wrote: > 
> > I have a series of tables that were created by: 
> > 
> >       CREATE TABLE ifInOctets ( 
> >         id int(11) NOT NULL default '0', 
> >         dtime datetime NOT NULL default '0000-00-00 00:00:00', 
> >         counter bigint(20) NOT NULL default '0', 
> >         KEY ifInOctets_idx (dtime) 
> >       ); 
> > 
> > When I run a query against any of the tables, the index isn't used.
> The 
> > query syntax is: 
> > 
> >       SELECT counter, UNIX_TIMESTAMP(dtime) FROM ifInOctets_137 WHERE 
> > id=2809 AND dtime>FROM_UNIXTIME(1073970000) AND 
> > dtime<=FROM_UNIXTIME(1076734799) ORDER BY dtime; 
> > 
> > Running an EXPLAIN of that command gives: 
> > 
> >       
> >
> +----------------+------+---------------+------+---------+------+-------
> 
> > --+- 
> > ----------------------------+ 
> >       | table          | type | possible_keys | key  | key_len | ref 
> > | 
> > rows    | Extra                       | 
> >       
> >
> +----------------+------+---------------+------+---------+------+-------
> 
> > --+- 
> > ----------------------------+ 
> >       | ifInOctets_137 | ALL  | dtime         | NULL |    NULL | NULL 
> > | 
> > 9279150 | Using where; Using filesort | 
> >       
> >
> +----------------+------+---------------+------+---------+------+-------
> 
> > --+- 
> > ----------------------------+ 
> >       1 row in set (0.00 sec) 
> > 
> > I'm running on a Sun E250 w/RAID running Solaris 8.  I'm running MySQL
> 
> > 4.0.16 precompiled Solaris binary.  My my.cnf is essentially the 
> > my-huge.cnf 
> > file.  Other people are running this application (RTG - 
> > http://rtg.sourceforge.net <http://rtg.sourceforge.net> ) on various
> platforms and MySQL versions and 
> > ARE 
> > NOT having this problem. 
> > 
> > I've run ANALYZE and OPTIMIZE against the tables with no effect.  I've
> 
> > dropped the indexes and recreated them with no effect.  I've done 
> > everything 
> > I can think of with no effect.  I am now officially stumped. 
> > 
> > Does anyone have any suggestions on what is going on and how I can fix
> 
> > it? 
> > Any help would be greatly appreciated. 
> > 
> > Thanks, 
> > 
> > Jack 
> > 
> > Jack Coxen 
> > IP Network Engineer 
> > TelCove 
> > 712 North Main Street 
> > Coudersport, PA 16915 
> > 814-260-2705 
> > 
> > 
> 
> 

----------------------------------------
Content-Type: text/html; name="unnamed"
Content-Transfer-Encoding: quoted-printable
Content-Description: 
----------------------------------------

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to