想象一下,有一个包含多列的表格id, a, b, c, d, e.我通常选择id,但是,客户端应用程序中有多个查询使用各种条件而不是列的子集.
当MySQL在多个列上具有多个WHERE条件的单个表上执行查询时,它是否真的可以使用在不同列上创建的索引?或者,使其快速的唯一方法是为所有可能的查询创建多列索引?
我对架构的设计有点困惑,但在开始之前,让我先向您展示架构,
CREATE TABLE Person
(
PersonID INT NOT NULL PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
-- some columns here..
CONSTRAINT tb_idF INDEX (FirstName),
CONSTRAINT tb_idL INDEX (LastName)
-- or
-- CONSTRAINT tb_idL INDEX (FirstName, LastName)
-- other constraints ...
);
CREATE TABLE JobDescription
(
JobDescriptionID INT NOT NULL PRIMARY KEY,
JobDescriptionName VARCHAR(50) UNIQUE
-- some columns here..
-- constraints ...
);
Run Code Online (Sandbox Code Playgroud)
并且混淆在这里,表的映射表:Person和JobDescription.目前,我有这个设计,
CREATE TABLE Person_JobDescription
(
RECID INT AUTO_INCREMENT PRIMARY KEY, -- …Run Code Online (Sandbox Code Playgroud)