最佳速度~1M行的表设计

时间:2011-04-01 05:52:20

标签: php mysql optimization

我的任务是开始将我们现有的(和臃肿的)Excel工作表与我们公司范围内的所有IP信息一起移植到MySQL数据库中。我刚刚转换了其他几张excel表,但没有一行超过一千行。因为这是一个新的数据库,并且因为它将保持接近但不超过100万条记录,所以我想确保我从一开始就以最佳方式进行设计。

我们需要为每个地址提供的信息:

  • IP地址
  • 面膜
  • 主机名
  • 网络(语音,数据,路由等)

非常感谢任何帮助!

谢谢:)

1 个答案:

答案 0 :(得分:2)

需要考虑的一些事项

  • 当你要求最佳速度时,那就是插入速度或选择速度。两者都可以解决,但牺牲了对手。
  • 对于设计良好的数据库来说,100万行真的不是那么多。

我建议您将数据规范化为以下内容

CREATE TABLE Hosts (
  HostID AUTOINCREMENT PRIMARY KEY
  , IPAddress  VARCHAR(15)
  , Mask     VARCHAR(15)
  , Hostname VARCHAR(32)
)

CREATE TABLE Departments (
  DepartmentID AUTOINCREMENT PRIMARY KEY
  , Department VARCHAR(32)
)

CREATE TABLE Divisions (
  DivisionID AUTOINCREMENT PRIMARY KEY
  , Division VARCHAR(32)
)

CREATE TABLE Networks (
  NetworkID AUTOINCREMENT PRIMARY KEY
  , Network VARCHAR(32)
)  

CREATE TABLE CompanyWide (
  HostID INTEGER
  , DepartmentID INTEGER
  , DivisionID INTEGER
  , NetworkID INTEGER

  , FOREIGN KEY (HostID) REFERENCES Hosts(HostID)
  , FOREIGN KEY (Department) REFERENCES Hosts(DepartmentID)
  , FOREIGN KEY (DivisionID) REFERENCES Hosts(DivisionID)
  , FOREIGN KEY (NetworkID) REFERENCES Hosts(NetworkID)
)  
相关问题