the REF_SEQ is defined below, the col DNA_SEQ is a string such as
"ATGCGGTTA",

| REF_SEQ | CREATE TABLE `REF_SEQ` (
  `SEQ_ID` int(11) NOT NULL auto_increment,
  `REF_ID` int(11) NOT NULL,
  `START_POSITION` int(11) NOT NULL,
  `END_POSITION` int(11) NOT NULL,
  `DNA_SEQ` text,
  `DNA_QUALITY` text,
  PRIMARY KEY  (`SEQ_ID`),
  KEY `index_ref_start` (`REF_ID`,`START_POSITION`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |

i create a index on cols REF_ID and START_POSITION, i also use analyze table
REF_SEQ to optimization the query,
and now the explain output is:


mysql> explain select * from REF_SEQ where START_POSITION  between 30000 and
8030000;
+----+-------------+---------+------+---------------+------+---------+------+--------+-------------+
| id | select_type | table   | type | possible_keys | key  | key_len | ref
| rows   | Extra       |
+----+-------------+---------+------+---------------+------+---------+------+--------+-------------+
|  1 | SIMPLE      | REF_SEQ | ALL  | NULL          | NULL | NULL    | NULL
| 219728 | Using where |
+----+-------------+---------+------+---------------+------+---------+------+--------+-------------+




2009/7/13 Johnny Withers <joh...@pixelated.net>

> Can you show the CREATE TABLE for your REF_SEQ table?
>
> The explain output says "using where" which means that MySQL will have to
> post-filter rows after the storage engine retrieves them. It also means the
> query may benefit from different/better indexing.
>
>
> On Mon, Jul 13, 2009 at 12:04 AM, TianJing <tianj...@genomics.org.cn>wrote:
>
>> i do not use text for start_postion,i use int for it. the only col which
>> defined to text is characters such as "ABTGDSDFSGFDG" etc.
>>
>> 2009/7/13 Darryle Steplight <dstepli...@gmail.com>
>>
>> > Numeric indexing is a lot faster. You definitely shouldn't use text or
>> > varchar types as column types for you min and max  values. Do an ALTER
>> > TABLE   on any column only hold numeric values and switch them to int
>> > or mediumint.
>> >
>> > On Mon, Jul 13, 2009 at 12:36 AM, TianJing<tianj...@genomics.org.cn>
>> > wrote:
>> > > sorry fo that, but i really need all cols in the table, i think the
>> > problem
>> > > maybe caused by one of the col which is text type, each record of this
>> > col
>> > > has 2000 characters. this makes the size of record more biger.
>> > >
>> > > 2009/7/13 Darryle Steplight <dstepli...@gmail.com>
>> > >>
>> > >> You are still doing SELECT * . Do you really need to return all of
>> the
>> > >> columns in that table or just COL1, COL2, COL5 for example. Only grab
>> > >> the columns you are actually going to use.
>> > >>
>> > >> On Mon, Jul 13, 2009 at 12:23 AM, TianJing<tianj...@genomics.org.cn>
>> > >> wrote:
>> > >> > thanks for reply,
>> > >> >
>> > >> > i hava an index on the start_position,the min_postion and the
>> > >> > max_postion is
>> > >> > constant value, the output of the query is:
>> > >> >
>> > >> > explain select * from REF_SEQ where START_POSITION  between 30000
>> and
>> > >> > 8030000;
>> > >> >
>> > >> >
>> > >> >
>> >
>> +----+-------------+---------+-------+-----------------+-----------------+---------+------+-------+-------------+
>> > >> > | id | select_type | table   | type  | possible_keys   | key
>> > >> > |
>> > >> > key_len | ref  | rows  | Extra       |
>> > >> >
>> > >> >
>> >
>> +----+-------------+---------+-------+-----------------+-----------------+---------+------+-------+-------------+
>> > >> > |  1 | SIMPLE      | REF_SEQ | range | index_seq_start |
>> > index_seq_start
>> > >> > |
>> > >> > 5       | NULL | 90886 | Using where |
>> > >> >
>> > >> >
>> >
>> +----+-------------+---------+-------+-----------------+-----------------+---------+------+-------+-------------+
>> > >> >
>> > >> > index_seq_start is the index on start_postion,
>> > >> >
>> > >> > 2009/7/13 Darryle Steplight <dstepli...@gmail.com>
>> > >> >>
>> > >> >> 1. Don't use SELECT *.  Only grab the cols that you only need.
>> Also
>> > >> >> make sure you have an index on min_position and max_position.
>> After
>> > >> >> that if your query isn't faster please show us the output of
>> running
>> > >> >> EXPLAIN select * from table_name where start_postion between
>> > >> >> min_postion and
>> > >> >>  max_postion" .
>> > >> >>
>> > >> >> On Mon, Jul 13, 2009 at 12:03 AM, JingTian<
>> jingtian.seu...@gmail.com
>> > >
>> > >> >> wrote:
>> > >> >> > Hi all,
>> > >> >> >
>> > >> >> > i use "select * from table_name where start_postion between
>> > >> >> > min_postion
>> > >> >> > and
>> > >> >> > max_postion" to select all the record in the ranges,
>> > >> >> > when the ranges is very large,such as 8000000(about 1000 record
>> in
>> > >> >> > it),
>> > >> >> > the
>> > >> >> > query is so slow,
>> > >> >> >
>> > >> >> > when i use mysql administrator i find that traffic is higher
>> when
>> > the
>> > >> >> > query
>> > >> >> > is begin,
>> > >> >> >
>> > >> >> > could you please give me some advice on how to optimization the
>> > >> >> > query?
>> > >> >> >
>> > >> >> > thanks,
>> > >> >> >
>> > >> >> > --
>> > >> >> > Tianjing
>> > >> >> >
>> > >> >>
>> > >> >>
>> > >> >>
>> > >> >> --
>> > >> >> A: It reverses the normal flow of conversation.
>> > >> >> Q: What's wrong with top-posting?
>> > >> >> A: Top-posting.
>> > >> >> Q: What's the biggest scourge on plain text email discussions?
>> > >> >
>> > >> >
>> > >> >
>> > >> > --
>> > >>
>> > >>
>> > >> --
>> > >> A: It reverses the normal flow of conversation.
>> > >> Q: What's wrong with top-posting?
>> > >> A: Top-posting.
>> > >> Q: What's the biggest scourge on plain text email discussions?
>> > >>
>> > >> --
>> > >> MySQL General Mailing List
>> > >> For list archives: http://lists.mysql.com/mysql
>> > >> To unsubscribe:
>> > >>  http://lists.mysql.com/mysql?unsub=jingtian.seu...@gmail.com
>> > >>
>> > >
>> > >
>> > >
>> > > --
>> > > Tianjing
>> > >
>> > >
>> >
>> >
>> >
>> > --
>> > A: It reverses the normal flow of conversation.
>> > Q: What's wrong with top-posting?
>> > A: Top-posting.
>> > Q: What's the biggest scourge on plain text email discussions?
>> >
>>
>>
>>
> --
> -----------------------------
> Johnny Withers
> 601.209.4985
> joh...@pixelated.net
>



-- 
Tianjing

Reply via email to