【发布时间】:2017-03-22 21:19:20
【问题描述】:
Mysql 和 SQL 用户。这个问题与你们俩有关。它关于索引。我有一个分类网站的表结构。我有一个通用表来存储标题、描述、发布用户等。我还有这个表结构来存储有关特定广告类别的详细属性。
CREATE TABLE `ad_detail` (
`ad_detail_id_pk` int(10) NOT NULL AUTO_INCREMENT,
`header_id_fk` int(10) NOT NULL,
`brand_id_fk` smallint(5) NULL,
`brand_name` varchar(200) NULL,
`is_brand_new` bool,
.......
`transmission_type_id_fk` tinyint(3) NULL,
`transmission_type_name` varchar(200) NULL,
`body_type_id_fk` tinyint(3) unsigned NULL,
`body_type_name` varchar(200) NULL,
`mileage` double NULL,
`fuel_type_id_fk` tinyint(3) NULL,
......
PRIMARY KEY (`ad_detail_id_pk`)
)
如您所见,第一部分属性属于移动广告,第二部分属于车辆广告,依此类推,我还有其他类别的其他属性。 header_id_fk 将保存与具有公共信息的标题表的关系。所以所有这些外键都是过滤广告所涉及的。有些人可能想找到所有诺基亚制造的手机。所以然后会使用brand_id_fk。有些人可能想按燃料类型过滤车辆。如您所见,我需要索引此表中的每个过滤属性。所以现在这是我的问题。
因此,当用户发布移动广告插入语句时,将包含一定数量的字段来存储数据。但是众所周知,索引在数据检索时会提高性能,但会增加插入和更新查询的成本。那么如果我插入移动广告,该插入查询是否会受到与车辆广告索引字段相关的其他属性的影响?
【问题讨论】:
-
为什么在 this 表中同时存在
brand_id和brand_name(以及其他对)?name应该仅在另一个表中。 -
查看我添加的 EAV 标签。
标签: mysql sql-server indexing