php - MySQL:基于国家/地区的产品列表

标签 php mysql sql

我有一个产品表。我想根据访问者的国家/地区(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/

相关文章:

MySQL 全文匹配/反对并不总是显示结果

java - 在java中执行这个sql语句时我收到这个错误

mysql - 如何解决MySQL中的汉字显示问题?

java - 如何仅针对用户输入的值更新数据库?

PHP/MySQL - 如果查询失败如何删除插入?

php - ajax/php 文件下载不工作?

php - 循环中的子查询

跨所有用户的 PHP session 式存储全局

java - Jhipster - MySQL java.sql.SQLException : Access denied for user 'root' @'localhost' (using password: NO) 错误

php - 使用 MySQL 结果更改 UITextField(xcode 项目)