我有一个产品表。我想根据访问者的国家/地区(IP 位置)向他们展示产品。该表如下所示:
Product ID, Name, Price, Size, Color, ...
该表“读取量很大”,我很少向其中写入新条目。
我想到了这个解决方案:将每个国家/地区作为一列添加到表中。我可以在那里设置 true 或 false,具体取决于我是否想向来自特定国家/地区的访问者展示特定产品。
Product ID, Name, Price, Size, Color, ..., USA, France, Spain, China
大约有 200 个国家/地区,因此该表将有很多列。该脚本收到了大量的请求。该查询将被称为每分钟+100万。所以我需要一些性能良好的解决方案。但我不认为这个解决方案是好的。最重要的因素是性能。
我正在使用 PHP、MySQL。
最佳答案
维护起来将是一场噩梦。随着国家的变化,你将不得不相应地修改你的模型。我建议类似:
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
关于php - MySQL:基于国家/地区的产品列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24045456/