我想将内存表用作一组队列。
所以,会有一个内存表,其中包含int a和b列。
查询如下:
SELECT b FROM table WHERE a =?订购b DESC LIMIT 1000
我试过了:
create table `test_table` (
`a` int(11) not null,
`b` int(11) not null,
primary key (`a`,`b`) using btree
) engine=memory
但主键仍然是HASH:
show index from `test_table`
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
---------- ---------- -------- ------------ ----------- --------- ----------- -------- ------ ------ ---------- -------
test_table 0 PRIMARY 1 a (NULL) (NULL) (NULL) (NULL) HASH
test_table 0 PRIMARY 2 b (NULL) 0 (NULL) (NULL) HASH
这是否意味着,我需要为此类查询创建另一个密钥(a
)?
为什么主键不能成为BTREE索引?如果我将主键更改为常规键有什么区别?
答案 0 :(得分:2)
您可以使用alter query修改索引类型。
ALTER TABLE test_table DROP PRIMARY KEY, ADD PRIMARY KEY USING BTREE (a,b);
或使用以下创建查询,
create table test_table (a int(11) not null,b int(11) not null,primary key USING BTREE(a,b)) engine=memory
有关内存引擎的更多详细信息,请通过以下链接进行操作。 http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html