相关疑难解决方法(0)

以关系表的形式检索MySQL EAV结果的最佳性能是什么

我想提取从EAV(实体属性值)的表,或更具体实体的元数据表的结果(认为像WordPress wp_postswp_postmeta),为"很好的格式化的关系表",以做一些排序和/或过滤.

我已经找到了一些如何在查询中格式化结果的示例(而不是编写2个查询并在代码中加入结果),但我想知道"最有效"的方法,特别是对于更大的结果集.

当我说"效率最高"时,我的意思是出现以下情况:

获取姓氏为XYZ的所有实体

返回按生日排序的实体列表


转过来:

** ENTITY **
-----------------------
ID  | NAME | whatever
-----------------------
 1  | bob  | etc
 2  | jane | etc
 3  | tom  | etc

** META **
------------------------------------
ID | EntityID | KEY         | VALUE
------------------------------------
 1 |   1      | first name  | Bob
 2 |   1      | last name   | Bobson
 3 |   1      | birthday    | 1983-10-10
 . |   2      | first name  | Jane …

mysql performance database-design pivot entity-attribute-value

14
推荐指数
1
解决办法
5142
查看次数

如何在SQL中实现过滤系统?

现在我打算在我的网站上添加一个过滤系统.

例子:

(ID=apple, COLOR=red, TASTE=sweet, ORIGIN=US)
(ID=mango, COLOR=yellow, TASTE=sweet, ORIGIN=MEXICO)
(ID=banana, COLOR=yellow, TASTE=bitter-sweet, ORIGIN=US)
Run Code Online (Sandbox Code Playgroud)

所以现在我有兴趣做以下事情:SELECT ID FROM thisTable WHERE COLOR ='yellow'AND TASTE ='SWEET'

但我的问题是我在我的网站中为多个类别执行此操作,并且列不一致.(如果桌子是用于手机,那么它将是品牌,3G-ENABLED,价格,颜色,波长等)

我怎么能设计一个允许这个的通用模式?

现在我正计划做:

table(ID, KEY, VALUE)
Run Code Online (Sandbox Code Playgroud)

这允许任意数量的列,但对于查询,我使用SELECT ID FROM表WHERE(KEY = X1 AND VALUE = V1)AND(KEY = X2 AND VALUE = V2),..返回空集.

有人可以推荐一个很好的解决方案吗?请注意,列数将定期更改

mysql sql

6
推荐指数
2
解决办法
1762
查看次数