メモリ テーブルを一連のキューとして使用したいと考えています。
したがって、int 列 a および b を持つメモリ テーブルが存在します。
次のようなクエリで:
SELECT b FROM table WHERE a=? ORDER BY 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
ということは、そのようなクエリのために別の key( ) を作成する必要があるということですか?主キーを BTREE インデックスにできないのはなぜですか? 主キーを通常のキーに変更した場合の違いは何ですか?