【问题标题】:RDBMS store list of children in father tableRDBMS 存储父亲表中的孩子列表
【发布时间】:2017-12-02 14:00:59
【问题描述】:
如果我想找到"John" 的所有孩子,我需要运行SELECT * FROM Child where Father_Name = "John",它会搜索整个Child 表。
有没有办法设计它,使Father 表将包含子列表,以便我可以通过在Father 表中搜索"John" 行来获取"John" 的所有子代?
【问题讨论】:
标签:
mysql
database-design
relational-database
one-to-many
rdbms
【解决方案1】:
您需要在 Child 表中的 Father_Name 上建立索引。
阅读 MySQL 中的 CREATE INDEX 语句。一旦该索引到位,MySQL 将在您执行您提供的查询时使用它。这将比扫描整个表快得多。表越大,改进越显着。
你没有问这个,但无论如何我都会扔掉它。就性能而言,使用 VARCHAR(45) 字段作为主键通常很糟糕。大多数数据库设计为每个实体添加一个标识号,以用作主键,并用作其他表或同一表中的其他行中的外键。整数比字符串产生更小和更快的索引。