2011-01-22 12 views
1

MySQL(InnoDB)でDECIMAL列の符号を効率的に索引付けする方法はありますか?10進数のMySQLインデックス記号

私は条件where amount > 0(およびその逆)を使用してクエリを実行していますが、高速化するためのファンシーな方法があるかどうかは疑問です。同じように、文字列の最初の文字をインデックスすると、select distinct left(some_string_column, 1)のようなクエリが高速化されます。

答えて

1

小数点以下の列を索引付けすると、結果がcolumn > 0になるようにMySQLが役立ちます。

CREATE INDEX signindex ON table(deccolumn); 

また、MySQLが効果的にインデックスを使用できるようにする、とwhereでの機能の使用を避けるために、あなたが事前に計算されたデータを持つ新しい列を追加することができ、そして新しいカラム

インデックス
ALTER TABLE table ADD leftchar char(1); 
UPDATE table SET leftchar=left(some_string_column, 1); 
CREATE INDEX charindex ON table(leftchar); 
SELECT DISTINCT leftchar FROM table;