List:Cluster« Previous MessageNext Message »
From:Matthew Montgomery Date:October 2 2009 4:02pm
Subject:Re: Mysql cluster- Primary key not used while using IN clause ?
View as plain text  
On Thu, 2009-10-01 at 11:31 -0700, Tarandeep Singh wrote:
> Hi,
> 
> I am trying to use IN clause in my query. And mysql cluster is not using
> primary key. Is there any workaround for this ?
> Here are my tables-
> 
> Table 1: Primary key = domain_name (created using Hash)
> 
> If I run this query-
> mysql> explain select * from table1 where domain_name in ( 'abc.com', '
> xyz.com');
> 
> Then the primary key is NOT used as shown in the explain plan:
> 
> select_type:SIMPLE
> table: table1
> type: ALL
> possible keys: PRIMARY
> key: NULL
> 
> Similarly, If I try to use a nested query, in the IN clause same problem and
> this will make query run slow. Any thoughts?


How many rows are in the `table1`? What version of NDB are you using? I
am not able to reproduce the described behavior in ndb-7.0.7
	
mysql> select version(); 
+----------------------+
| version()            |
+----------------------+
| 5.1.35-ndb-7.0.7-log | 
+----------------------+
1 row in set (0.02 sec)

mysql> CREATE TABLE `t2` (
  `domain_name` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`domain_name`) USING HASH
) ENGINE=ndbcluster;

INSERT INTO `t2` (`domain_name`) VALUES
('asdfadfasdf'),('aavwefwc'),('ajinincaincoiewnc'),('nionfaonencwna'),('rrthsvervare'),('gaawevcaweverahgag'),('aagwergavvwaew'),('wvageahrgrav'),('agagwegawegewg'),('agehhseha'),('erhahrhaehaerh'),('aeahreahrrewhsehr'),('hahrhahaerhaerhre'),('zzreyargzyzry'),('haerhahzrzRyeyw'),('aharzyarhhaeraer'),('ahraarthwe'),('aherbqarbaerhtrfjrt'),('sjtrdnstrjjstrj'),('sjmtrjdmjsjmrtjaja'),('sjksartjaaerh'),('ahahjaerhrzryzdryh'),('sashjsbtajrbzx'),('zrehsbtjtahf'),('shethrtsjgf4j'),('shbry3h'),('fbsthjhsnrzyvr5'),('zsrfbgnjyfghrt'),('snrtbxdcfnhtr4'),('nsrbxgnynjdhzvrz'),('zeyjdtbsfbbrs'),('zefgbjjxgzgrae'),('argavhbgtbnsryzdf'),('gzrgebgjhdea'),('gstnydtxfgcbstbbr'),('bsdhrebjydhjb'),('rbhstbtjdfnmtyetmm'),('dtmtyndyygkghjsrb'),('xjsrbtnyxdghjmdz'),('
shetnysdjjwrth6nbxd'),('sdbhtbsdjgn5hjejsr'),('thshsthjktukuyg'),('shstb4nsjfgb6hz'),('strm,dhgnybjksf'),('sjydgjdghj'),('sbstrndjsdghjwrmsn'),('sbnsgbsrmksnmsnsr'),('tjnsntrnsgjcf'),('ksjsrgnbstrnjfgtntnsjtr'),('jsnttaherhfgsnyr'),('bzdzbtrhzhbabnzsg'),('natznrnynrrzj');



mysql> EXPLAIN SELECT * FROM `t2` WHERE `domain_name` =
'haerhahzrzRyeyw'\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: t2
         type: const
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 52
          ref: const
         rows: 1
        Extra: 
1 row in set (0.00 sec)

mysql> EXPLAIN SELECT * FROM `t2` WHERE `domain_name` IN
('haerhahzrzRyeyw','tjnsntrnsgjcf','zsrfbgnjyfghrt')\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: t2
         type: range
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 52
          ref: NULL
         rows: 3
        Extra: Using where with pushed condition
1 row in set (0.00 sec)

-- 
Matthew Montgomery
MySQL Senior Support Engineer
Sun Microsystems Inc., Database Group 
San Antonio, Texas, USA

Thread
Mysql cluster- Primary key not used while using IN clause ?Tarandeep Singh1 Oct
  • Re: Mysql cluster- Primary key not used while using IN clause ?Matthew Montgomery2 Oct