我正在使用用户可以访问的网站:
当用户输入大小并单击Enter时,将向执行查询的PHP脚本触发ajax调用,查看数据库并查找相应的价格。
尺寸以10cm为增量。因此,如100,110,120,130等。因此,如果用户写入115,它将自动选择120作为适当的大小/价格(它将始终向上舍入)。
我已经制作了这个结构,但想知道你是否有任何想法我可以更快/更好地优化它。
products
| id | SKU | name | category
| 1 | 010101 | Window Blind 1 | Blinds
| 2 | 020202 | Window Blind 2 | Blinds
pricing_colors
| id | group | color
| 1 | A | Red
| 2 | B | Green
| 3 | C | Blue
| 4 | D | White
product_colors
| id | sku | color_id
| 1 | 010101 | 1
| 2 | 010101 | 2
| 2 | 020202 | 1
| 2 | 020202 | 3
pricing_matrix
| id | sku | color_group | width | height | price
| 1 | 010101 | A | 100 | 100 | 50
| 2 | 010101 | A | 110 | 100 | 55
| 3 | 010101 | A | 120 | 100 | 60
| 4 | 010101 | A | 100 | 110 | 53
| 5 | 010101 | A | 100 | 120 | 56
| 6 | 010101 | B | 100 | 100 | 60
| 7 | 010101 | B | 110 | 100 | 65
| 8 | 010101 | B | 120 | 100 | 70
| 9 | 010101 | B | 100 | 110 | 63
| 20 | 010101 | B | 100 | 120 | 66
如您所见,pricing_matrix表将非常大。因为它将具有所有宽度/高度增量的3个颜色组中的每一个的所有宽度和高度。
考虑了以下查询以找到合适的价格:
SELECT price FROM pricing_matrix
WHERE height >= ... AND width >= .... AND sku = .... AND color_group = 'A'
ORDER BY height,width ASC
请提出如何改进的建议! :)