2012-03-23 10 views
1


私は、MySQLでインデックスについて2つの質問をお願いしたいと思います:
1.それはMyISAMのエンジンでタイプ HASHのインデックスを持つことが可能ですか?
2.などの計算された値にインデックスを作成することは可能です。
MySQLの複雑なインデックス

CREATE INDEX AD_MAIN_CATEGORY ON ad ((category_id % 100) ASC) USING BTREE;


私はすべてのカテゴリを選択して、メイン/サブカテゴリー内の広告の数をカウントクエリを持っています。各広告には、main_category_idを計算できるsubcategory_idのみがあります(subcategory_id = 120 => main_category_id = 100)。悪(遅い)クエリ:

SELECT `c`.*, (SELECT COUNT(*) FROM ad WHERE IF(c.parent_id = 0,(ad.category_id DIV 100) * 100 = c.id,ad.category_id=c.id)) AS `count`, `ct`.`label` FROM `category` AS `c` INNER JOIN `category_translation` AS `ct` ON c.id = ct.category_id WHERE (ct.language_id = 1) ORDER BY `c`.`id` ASC

答えて

3

質問1:Why does MySQL not have hash indices on MyISAM or InnoDB?


質問2:

YesとNo

ありませんが、他のそれについての質問を見ますはありませんが、(メインストリームの)MySQLでは使用できませんがはい、 iaDB(フォークまたはMySQL)。お読みください:Virtual columns

+0

ありがとうございます:) –