我意识到,当我在表中创建外键时,索引会自动添加。
在我的表格中:
CREATE TABLE `SupplierOrderGoods` (
`shopOrder_id` INT(11) NOT NULL,
`supplierGood_id` INT(11) NOT NULL,
`count` INT(11) NOT NULL,
PRIMARY KEY (`shopOrder_id`, `supplierGood_id`),
CONSTRAINT `FK_SupplierOrderGoods_ShopOrders` FOREIGN KEY (`shopOrder_id`) REFERENCES `shoporders` (`id`),
CONSTRAINT `FK_SupplierOrderGoods_SupplierGoods` FOREIGN KEY (`supplierGood_id`) REFERENCES `suppliergoods` (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
索引
INDEX `FK_SupplierOrderGoods_SupplierGoods` (`supplierGood_id`)
已自动创建。
没关系,正如我在另一篇文章中找到的那样创建了索引。我正在寻找用于和发现的索引,它们用于优化表中的搜索。 现在,我知道,我必须使用索引来优化数据库的工作。
另外,我发现,索引可能很复杂(不是在一个字段上,而是在某些字段上)。在这种情况下,我想问我应该使用复杂的索引:
INDEX `FK_ShopOrders_SupplierGoods` (`shopOrder_id`, `supplierGood_id`),
或两个简单的索引?:
INDEX `FK_SupplierOrderGoods_SupplierGoods` (`supplierGood_id`),
INDEX `FK_SupplierOrderGoods_ShopOrders` (`shopOrder_id`),
答案 0 :(得分:3)
我自己仍在赚取索引,但我相信它将依赖于您将查询数据库的数据类型。
例如,如果您有一个特定记录的报告将会运行很多,那么您将需要一个索引。如果报告只提取一列,则创建一个列索引,如果它由两个组成,如名字和姓氏记录,那么您可能需要两个索引。
您不希望在所有内容上放置索引,因为这可能会导致性能问题,因为记录和索引都需要更新。因此,对其进行了大量插入或更新的表格,您将想要考虑索引是否会受到伤害或帮助。
索引的大量信息。