Jos*_*ose 0 php mysql sql database architecture
让我们以这种方式解决问题,我有一种比萨有2种类型的成分.这些成分在我的PHP和我的MySQL中以数组形式存储.我存储这些数组在二进制中的位置之和的Int.
我的意思是:
$ingredients = ["cheese","pepperoni","bacon","onion"];
Run Code Online (Sandbox Code Playgroud)
如果我的披萨有奶酪和培根我存储值2 ^ 0 + 2 ^ 2 = 5.
我在数据库中搜索价值为5的所有Pizzas 并获得快速而酷的搜索.
我的问题是:如果我有很多成分,该怎么办?即使我只使用其中的两个,如果它们位于阵列的较大位置(让我们说100),我就被搞砸了.
你会在那个特定问题上使用什么样的解决方案?
PD-显然我不是在谈论比萨公司,而是我关心ms速度
你最好定期,相关表(pizza,pizza_ingredients,ingredients)
这对你甚至MySQL来说都简单得多:
# simple query to find pizza's with specified ingredients
SELECT
*
FROM
pizza_ingredients tpzi
LEFT JOIN
pizza tp ON
tp.pizza_ID = tpzi.pizza_ID
WHERE
tpzi.ingredient_ID IN (1,2,3,45)
Run Code Online (Sandbox Code Playgroud)
表格示例:
表pizza:
表pizza_ingredients':
表 ingredients
有趣的是..如果你想找到奶酪比萨饼:
标准:
SELECT
*
FROM
pizza_ingredients tpzi
LEFT JOIN
pizza tp ON
tp.pizza_ID = tpzi.pizza_ID
WHERE
tpzi.ingredient_ID = 1
Run Code Online (Sandbox Code Playgroud)
你的想法:
SELECT
*
FROM
pizza
WHERE
pizza_ingerdients MOD = 0
Run Code Online (Sandbox Code Playgroud)
会慢一点:)
| 归档时间: |
|
| 查看次数: |
710 次 |
| 最近记录: |