Dear all,

I have the following query:

  SELECT distinct pf.*
    FROM homo_sapiens_lite_120.gene lg,
         homo_sapiens_lite_120.gene_prot lgp,
         homo_sapiens_core_120.protein_feature pf
   WHERE lg.chr_name = 'chr22'
     AND lg.gene = lgp.gene
     AND lgp.translation_id = pf.translation
  
However, EXPLAIN on this says:

+-------+------+----------------------------+----------------+---------+----------------+---------+----------------------+
| table | type | possible_keys              | key            | key_len | ref           
| | rows    | Extra                |
+-------+------+----------------------------+----------------+---------+----------------+---------+----------------------+
| pf    | ALL  | translation                | NULL           |    NULL | NULL          
| | 2316340 | Using temporary      |
| lgp   | ref  | gene,gene_2,translation_id | translation_id |       4 | 
|pf.translation |      19 | where used; Distinct |
| lg    | ref  | gene,chr,chr_start         | gene           |       4 | lgp.gene      
| |      19 | where used; Distinct |
+-------+------+----------------------------+----------------+---------+----------------+---------+----------------------+

This is puzzling, because pf.translation should be a perfectly valid index?
(also see the 'SHOW CREATE TABLE's below). 

Is this a bug or a feature ? 

What's worse, I can't persuade MySQL (server version 3.23.32 on TrueUnix) to
use the index by adding ``USE INDEX(translation)'' as

  SELECT distinct pf.*
    FROM homo_sapiens_lite_120.gene lg,
         homo_sapiens_lite_120.gene_prot lgp,
         homo_sapiens_core_120.protein_feature pf USE INDEX(translation)
   WHERE lg.chr_name = 'chr22'
     AND lg.gene = lgp.gene
     AND lgp.translation_id = pf.translation

Does the parser/optimizer routinely ignore  the 'USE INDEX(name)'-hints ? 
(I've seen this before and find it a bit annoying, really). 

Any help much appreciated. 

                                                                      Philip

mysql> show create table protein_feature;
+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table           | Create Table                                                       
|                                                                                      
|                                                                                      
|                                                                                      
|                                                                                      
|                                                                                      
|                                                                                      
|                         |
+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| protein_feature | CREATE TABLE `protein_feature` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `translation` varchar(40) NOT NULL default '',
  `seq_start` int(10) NOT NULL default '0',
  `seq_end` int(10) NOT NULL default '0',
  `analysis` int(10) unsigned NOT NULL default '0',
  `hstart` int(10) NOT NULL default '0',
  `hend` int(10) NOT NULL default '0',
  `hid` varchar(40) NOT NULL default '',
  `score` double(16,4) NOT NULL default '0.0000',
  `evalue` varchar(20) default NULL,
  `perc_id` int(10) default NULL,
  PRIMARY KEY (`id`),
  KEY `translation`(`translation`),
  KEY `hid_index`(`hid`)
) TYPE=MyISAM |
+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)

mysql> show create table homo_sapiens_lite_120.gene_prot;
+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table     | Create Table                                                             
|                                                                                      
|                                                                                      
|                                                                                      
|                                                                                      
|                                                                                      
|                                                                                      
|                                                                                      
|                                                                                      
|                                 |
+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| gene_prot | CREATE TABLE `gene_prot` (
  `gene` int(10) unsigned NOT NULL default '0',
  `translation_id` int(10) unsigned NOT NULL default '0',
  `translation` char(40) NOT NULL default '',
  `prints` char(40) default NULL,
  `prosite` char(40) default NULL,
  `pfam` char(40) default NULL,
  `coil` char(40) default NULL,
  `low_complexity` char(40) default NULL,
  `signal_peptide` char(40) default NULL,
  `transmembrane` char(40) default NULL,
  `interpro` char(40) default NULL,
  `short_description` char(255) default NULL,
  `description` char(255) default NULL,
  KEY `gene`(`gene`),
  KEY `prosite`(`prosite`,`gene`),
  KEY `prints`(`prints`,`gene`),
  KEY `pfam`(`pfam`,`gene`),
  KEY `interpro`(`interpro`,`gene`),
  KEY `gene_2`(`gene`),
  KEY `translation_id`(`translation_id`)
) TYPE=MyISAM |
+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)

mysql> 



-- 
The mail transport agent is not liable for any coffee stains in this message
-----------------------------------------------------------------------------
Philip Lijnzaad, [EMAIL PROTECTED] European Bioinformatics Institute,rm A2-08
+44 (0)1223 49 4639                 Wellcome Trust Genome Campus, Hinxton
+44 (0)1223 49 4468 (fax)           Cambridgeshire CB10 1SD,  GREAT BRITAIN


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to