将clientid作为表中的第一个字段是一个好习惯,从而制作一个复合键代替更快的获取

时间:2017-11-05 11:43:04

标签: mysql rdbms

我的场景是拥有多个客户端,并按客户端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.

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以在client_id字段上定义索引,使用这种方法,它将在MySQL中快速

ALTER TABLE `staff` ADD INDEX(`client_id`);