Hi,

>From the MySQL Manual:

MySQL normally uses the index that finds the least number of rows. An
index is used for columns that you compare with the following operators:
=, >, >=, <, <=, BETWEEN, and a LIKE with a non-wildcard prefix like
'something%'.

http://www.mysql.com/doc/en/MySQL_indexes.html

The != does not belong to that list of comparision operators...
Hope this helps!

--
Diana Soares


On Thu, 2003-11-20 at 16:12, [EMAIL PROTECTED] wrote:
> >Description:
>       a simple select on a large table does not use an indexed column when the WHERE 
> clause uses a != b
>       The same query using as WHERE a < b OR a > b  (which of course does the same) 
> *does* use an index.
> >How-To-Repeat:
> 
> mysql <<END_OF_FILE
> 
> create database unequalproblem;
> use unequalproblem;
> 
> -- MySQL dump 8.22
> --
> -- Host: localhost    Database: unequalproblem
> ---------------------------------------------------------
> -- Server version     3.23.56
> 
> --
> -- Table structure for table 'test'
> --
> 
> CREATE TABLE test (
>   id int(11) NOT NULL auto_increment,
>   number int(11) NOT NULL default '0',
>   PRIMARY KEY  (id),
>   KEY k_number (number)
> ) TYPE=MyISAM;
> 
> --
> -- Dumping data for table 'test'
> --
> 
> 
> INSERT INTO test VALUES (1,2);
> INSERT INTO test VALUES (2,4);
> INSERT INTO test VALUES (3,9);
> 
> select('EXPLAIN SELECT id from test WHERE number != 1;   ***  uses NO index');
> EXPLAIN SELECT id from test WHERE number != 1;
> select('EXPLAIN SELECT id from test WHERE number < 1 OR number > 1;   *** actually 
> same query, index on number');
> EXPLAIN SELECT id from test WHERE number < 1 OR number > 1;
> 
> drop database unequalproblem
> 
> END_OF_FILE
> 
> >Fix:
>       the work around is in the prblem description
> 
> >Submitter-Id:        <submitter ID>
> >Originator:  [EMAIL PROTECTED]
> >Organization:
>  European Design Centre b.v.
> >MySQL support: none
> >Synopsis:    "WHERE a != b" evaluates different from "WHERE a < b OR a > b"
> >Severity:    non-critical
> >Priority:    low
> >Category:    mysql
> >Class:               sw-bug
> >Release:     mysql-3.23.58 (Source distribution)
> 
> >Environment:
> System: Linux archie 2.4.20-20.9 #1 Mon Aug 18 11:27:43 EDT 2003 i686 athlon i386 
> GNU/Linux
> Architecture: i686
> 
> Some paths:  /usr/bin/perl /usr/bin/make /usr/bin/gmake /usr/bin/gcc /usr/bin/cc
> GCC: Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/specs
> Configured with: ../configure --prefix=/usr --mandir=/usr/share/man 
> --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking 
> --with-system-zlib --enable-__cxa_atexit --host=i386-redhat-linux
> Thread model: posix
> gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
> Compilation info: CC='i386-redhat-linux-gcc'  CFLAGS='-O2 -g -pipe -march=i386 
> -mcpu=i686 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE'  
> CXX='i386-redhat-linux-g++'  CXXFLAGS='-O2 -g -pipe -march=i386 -mcpu=i686 
> -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-rtti -fno-exceptions'  
> LDFLAGS=''
> LIBC: 
> lrwxrwxrwx    1 root     root           13 May 15  2003 /lib/libc.so.6 -> 
> libc-2.3.2.so
> -rwxr-xr-x    1 root     root      1557296 Apr  8  2003 /lib/libc-2.3.2.so
> -rw-r--r--    1 root     root      2331360 Apr  8  2003 /usr/lib/libc.a
> -rw-r--r--    1 root     root          204 Apr  8  2003 /usr/lib/libc.so
> Configure command: ./configure '--host=i386-redhat-linux' 
> '--build=i386-redhat-linux' '--target=i386-redhat-linux-gnu' '--program-prefix=' 
> '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' 
> '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' 
> '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' 
> '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' 
> '--without-readline' '--without-debug' '--enable-shared' 
> '--with-extra-charsets=complex' '--with-bench' '--localstatedir=/var/lib/mysql' 
> '--with-unix-socket-path=/var/lib/mysql/mysql.sock' '--with-mysqld-user=mysql' 
> '--with-extra-charsets=all' '--with-innodb' '--enable-local-infile' 
> '--enable-large-files=yes' '--enable-largefile=yes' 
> '--with-berkeley-db-includes=/usr/include' '--with-berkeley-db-libs=/usr/lib' 
> '--enable-thread-safe-client' 'CFLAGS=-O2 -g -pipe -march=i386 -mcpu=i686 
> -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE'!
 '!
> CXXFLAGS=-O2 -g -pipe -march=i386 -mcpu=i686 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 
> -D_LARGEFILE_SOURCE -fno-rtti -fno-exceptions' 'build_alias=i386-redhat-linux' 
> 'host_alias=i386-redhat-linux' 'target_alias=i386-redhat-linux-gnu'
-- 
Diana Soares


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

Reply via email to