私はMySQLのインデックスを学習しており、そのインデックスはSELECTクエリのWHERE句に指定された任意の列に適用する必要があることがわかりました。MySQLの初心者 - 複数の列のインデックス
次に、Multiple Column Index vs Multiple Indexesが見つかりました。
最初のQ、私は何が複数の列のインデックスですか?私は、Joomlaのコードは、この複数の列のインデックスですか?
CREATE TABLE `extensions` (
`extension_id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`type` VARCHAR(20) NOT NULL,
`element` VARCHAR(100) NOT NULL,
`folder` VARCHAR(100) NOT NULL,
`client_id` TINYINT(3) NOT NULL,
... ...
PRIMARY KEY (`extension_id`),
// does code below is multiple column index?
INDEX `element_clientid` (`element`, `client_id`),
INDEX `element_folder_clientid` (`element`, `folder`, `client_id`),
INDEX `extension` (`type`, `element`, `folder`, `client_id`)
)
第二にQは、1つの複数の列のインデックスは、1つのSELECTで使用されていることを考えた場合、私は修正するのですか?インデックスの親指の
SELECT column_x WHERE element=y AND clinet_id=y; // index: element_clientid
SELECT ex.col_a, tb.col_b
FROM extensions ex
LEFT JOIN table2 tb
ON (ex.ext_id = tb.ext_id)
WHERE ex.element=x AND ex.folder=y AND ex.client_id=z; // index: element_folder_clientid
はい、フィールド1に基づいていくつかのテストソートを行い、他のフィールドは自動的に索引付けされます。しかし、私は要素とfield_idを別々に分割することについてはわかりません。 – qaharmdz