当前位置: 首页 > news >正文

mysql eav_检索MySQL EAV结果作为关系表的最佳性能是什么

我想从EAV(实体属性值)表或更具体地从实体元数据表(如wordpress

wp_posts和wp_postmeta)中提取结果作为“格式正确的关系表”, 以便进行一些排序和/或过滤 。

我找到了一些有关如何在查询中格式化结果的示例(与编写2个查询并将结果连接到代码中相反),但是我想知道这样做的“最有效”方法,尤其是对于较大的结果套。

当我说“最有效”时,是指类似以下情况:

获取所有具有XYZ之类姓氏的实体

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

例如打开这个:

** 实体 **

-----------------------

ID | NAME | 随你

-----------------------

1 | 鲍勃 等等

2 | 简| 等等

3 | 汤姆| 等等

**元**

------------------------------------

ID | EntityID | KEY | 值

------------------------------------

1 | 1 | 名| 鲍勃

2 | 1 | 姓| 鲍勃森

3 | 1 | 生日 1983-10-10

。| 2 | 名| 简

。| 2 | 姓| 简斯多特

。| 2 | 生日 1983-08-10

。| 3 | 名| 汤姆

。| 3 | 姓| 汤姆森

。| 3 | 生日 1980-08-10

到这个:

**结果**

-----------------------------------------------

EID | NAME | 名| 姓| 生日

-----------------------------------------------

1 | 鲍勃 鲍勃| 鲍勃森| 1983-10-10

2 | 简| 简| 简斯多特| 1983-08-10

3 | 汤姆| 汤姆| 汤姆森| 1980-08-10

因此我可以按任何元字段进行排序或过滤。

我在这里找到了一些建议,但找不到任何更好的讨论。

选项 :

GROUP_CONCAT :

SELECT e。*,GROUP_CONCAT(CONCAT_WS('||',m.KEY,m.VALUE)ORDER BY m.KEY SEPARATOR';;')

从ENTITY e JOINMETA m在e.ID = m.EntityID

多人加入 :

SELECT e。*,将m1.VALUE用作“名字”,将m2.VALUE用作“姓氏”,将m3.VALUE用作“生日”

来自“ ENTITY” e

左联接META m1

开e.ID = m1.EntityID和m1.meta_key =’名字’

左联接META m2

ON e.ID = m2.EntityID AND m2.meta_key =’姓氏’

左联接META m3

开e.ID = m3.EntityID和m3.meta_key =’生日’

合并 :

选择e。*

,MAX(IF(m.KEY =’名字’,m.VALUE,NULL))作为’名字’

,MAX(IF(m.KEY =’姓氏’,m.VALUE,NULL))作为’姓氏’

,MAX(IF(m.KEY =’birthday’,m.VALUE,NULL))作为’birthday’

来自“ ENTITY” e

加入META m

开启e.ID = m.EntityID

代码 :

从“实体”中选择e。* e其中e.ID = {whatever};

在PHP中,根据结果创建一个占位符对象

从“ META”中选择m。* m,其中m.EntityID = {whatever};

在PHP中,遍历结果并附加到实体对象,例如: $e->{$result->key} = $result->VALUE

一般而言,哪个更适合过滤/排序?

相关问题:

相关文章:

  • mysql与后台乱码问题_MySQL+PHP[utf-8]乱码原因与解决方法
  • MySQL集函数随机数_MySQL的随机数函数rand()的使用技巧
  • jmx编程监控mysql_JMX-JAVA进程监控利器
  • zookeeper清空hbase_zookeeper和HBASE总结
  • ldap radius mysql_OpenLDAP+FreeRADIUS+MySQL+RP-PPPOE 构建PPPOE服务器
  • mysql分批导出数据_一分钟学会系列:大批量数据导出Excel-分页查询性能优化
  • php mysql 创建数据表_PHP MySQL 创建数据表
  • pythonioerror0 121_Python中的“IOError:[Errno 0]Error”错误
  • python词云乱码_python词云库wordCloud使用方法详解(解决中文乱码)
  • 儿童手工制作日历_怎么做手工儿童卡通绵羊日程管理小日历
  • 内存cpu占用不高但mysql很卡_解决Mysql占用cpu,内存高故障案例
  • 康乐面板mysql默认密码_Linux安装kangle(康乐)网站管理面板的详细教程
  • mysql jpa 不要自动建表_18.1. 从零开始学springboot-配置jpa自动建表为innodb
  • mysql 存储json如何查出_Mysql如何提取存储的JSON值
  • mysql增量备份backupex_数据库增量备份,恢复innobackex
  • [译]如何构建服务器端web组件,为何要构建?
  • 【翻译】babel对TC39装饰器草案的实现
  • 11111111
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • emacs初体验
  • github指令
  • gulp 教程
  • IP路由与转发
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Redash本地开发环境搭建
  • spring boot下thymeleaf全局静态变量配置
  • 创建一种深思熟虑的文化
  • 从tcpdump抓包看TCP/IP协议
  • - 概述 - 《设计模式(极简c++版)》
  • 京东美团研发面经
  • 如何学习JavaEE,项目又该如何做?
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 我的zsh配置, 2019最新方案
  • 小李飞刀:SQL题目刷起来!
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #162 (Div. 2)
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #QT(串口助手-界面)
  • #WEB前端(HTML属性)
  • #预处理和函数的对比以及条件编译
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (2)nginx 安装、启停
  • (20050108)又读《平凡的世界》
  • (6)STL算法之转换
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (分布式缓存)Redis持久化
  • (接口自动化)Python3操作MySQL数据库
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .mysql secret在哪_MYSQL基本操作(上)
  • .Net IE10 _doPostBack 未定义
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .net 无限分类