我有一张产品表。我想根据他们的国家/地区(IP位置)显示访客产品。该表如下所示:
Product ID, Name, Price, Size, Color, ...
这个表是#34;读得很重",我很少写新条目。
我想到了这个解决方案:将每个国家/地区添加到表中作为列。在那里,我可以设置真或假,取决于我是否要向某个国家的访客展示某种产品。
Product ID, Name, Price, Size, Color, ..., USA, France, Spain, China
大约有200个国家/地区,因此该表将包含许多列。该脚本获得了大量的请求。该查询将被称为每分钟+ 1百万。所以我需要一些性能良好的解决方案。但我不认为这个解决方案是好的。最重要的因素是表现。
我使用的是PHP,MySQL。
答案 0 :(得分:1)
维持这将是一场噩梦。随着国家的出现,您将不得不相应地修改您的模型。我会建议像:
CREATE TABLE PRODUCT_COUNTRY -- perhaps there''s a better name for this
( PRODUCT_ID ...
, COUNTRY_CODE CHAR(3) NOT NULL
, CONSTRAINT PK_PRODUCT_COUNTRY PRIMARY KEY (PRODUCT_ID, COUNTRY_CODE)
, CONSTRAINT FK_PRODUCT FOREIGN KEY (PRODUCT_ID) REFERENCES PRODUCTS (PRODUCT_ID)
, CONSTRAINT FK_COUNTRY FOREIGN KEY (COUNTRY_CODE) REFERENCES COUNTRIES (COUNTRY_CODE)
) ENGINE = INNODB