我的场景是拥有多个客户端,并按客户端ID分隔他们的数据。对我来说,似乎有客户端ID,因为几乎所有表中的第一个字段都会使主索引和数据隔离更快。
示例SQL(MySQL)
CREATE TABLE IF NOT EXISTS client (
client_id BIGINT(20) NOT NULL AUTO_INCREMENT,
client_name VARCHAR(50) NOT NULL UNIQUE,
created DATETIME NOT NULL,
modified TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (client_id)
)ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS staff (
client_id BIGINT(20) NOT NULL,
staff_id BIGINT(20) NOT NULL UNIQUE AUTO_INCREMENT,
created DATETIME NOT NULL,
modified TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (client_id, staff_id),
FOREIGN KEY (client_id) REFERENCES client(client_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
bill_master etc.
答案 0 :(得分:1)
在这种情况下,您可以在client_id字段上定义索引,使用这种方法,它将在MySQL中快速
ALTER TABLE `staff` ADD INDEX(`client_id`);