MySQL查询有什么问题?慢,并且具有空字段
在工作中,我必须解决我正在构建的系统的业务需求。这是一家初创公司,所以我戴着几顶帽子。这不是我的专长 在许多其他API中,有一个API,我们必须对销售点系统的MySQL 5.7数据库的API前台数据发出HTTP请求 有一些问题:MySQL查询有什么问题?慢,并且具有空字段,mysql,database,join,query-optimization,Mysql,Database,Join,Query Optimization,在工作中,我必须解决我正在构建的系统的业务需求。这是一家初创公司,所以我戴着几顶帽子。这不是我的专长 在许多其他API中,有一个API,我们必须对销售点系统的MySQL 5.7数据库的API前台数据发出HTTP请求 有一些问题: API不包含很多错误消息,例如语法错误。例如,如果我尝试向结果中添加具有相同名称的键,则会得到521 该API实际上没有文档记录 我们需要在给定日期(即关闭日期)关闭的所有订购商品的销售额。这些信息包含在几个表格中: 订单:包含所有未完成(关闭=0)或已完成(关闭=
订单
:包含所有未完成(关闭=0
)或已完成(关闭=1
)的订单以及收银台关闭日期(关闭日期
)。它不知道订单是什么,但它有一个小计,以及税收信息和其他与此无关的数据
orders\u item
:包含已订购且与“orders\u item.order\u ID=orders.ID”字段中的订单关联的所有项目
- 订购物品时,会将
分配给物品。如上所述,订单由`itemID'项组成。每个项目都通过其orderID与订单关联。表示项目的行具有其唯一ID itemPLU。这是必需的信息。此表不知道与订购项目相关的修改(“成分”或“选项”)itemID
orders\u options
:包含一个人对一道菜的选择,比如什么汤,什么甜点。选项与由itemID
字段排序的项目相关联。期权有额外的成本,因为它们是固体物品,需要计入存货,所以我们必须知道
orders\u配料
:包含可以添加到菜肴中的东西,比如比萨饼上的额外奶酪或配料,或者古巴三明治中的辛辣蛋黄酱,而不是普通的。已订购的成分通过itemID
字段与已订购的项目关联
#MySQL 5.7.12
#请删除脚本末尾创建的对象
#或者在创建之前检查它们是否存在
#“\\”是一个分隔符
选择version()作为“mysql版本”;
#
#表结构:订单
#
如果存在“订单”,则删除表;
创建“订单”表(
`ID`int(11)无符号非空自动增量,
`Date`datetime不为空,
`DateClose`datetime不为空,
`DatePreorder`datetime默认值为空,
`表_ID`smallint(4)无符号非空默认值0,
`客户端_ID`smallint(4)未签名非空,
`用户_ID`smallint(5)未签名非空,
`交付ID`mediumint(5)未签名不为空,
`小计`十进制(13,4)不为空,
`Tax1`十进制(13,4)不为空,
`Tax2`十进制(13,4)不为空,
`Tax3`十进制(13,4)不为空,
`Tax4`十进制(13,4)不为空,
`Tax5'十进制(13,4)不为空,
`Tax6`十进制(13,4)不为空,
`不可征税的`十进制(13,4)不为空,
`NonSale`十进制(13,4)不为空,
`进位小数(13,4)不为空,
`总计`十进制(13,4)不为空,
`设备'tinyint(2)未签名非空默认值0,
`客户端名称'varchar(48)校对utf8mb4\u unicode\u ci不为空,
`Profile_ID`varchar(32)校对utf8mb4_unicode_ci不为空,
`Bill`tinyint(1)未签名非空默认值0,
`已完成'tinyint(1)未签名非空默认值0,
`Closed`tinyint(1)无符号非空默认值0,
`准备的'tinyint(1)未签名的非空,
`Close_Date`datetime默认值为空,
`注意` mediumtext Complate utf8mb4\u unicode\u ci不为空,
`原因`mediumtext Complate utf8mb4\u unicode\u ci不为空,
`Void_By`smallint(5)unsigned NOT NULL,
`IP`tinyint(3)无符号非空默认值0,
`已删除'tinyint(1)未签名非空默认值0,
主键(`ID`),
键'Closed'('Closed'、'Deleted'、'Completed'),
键'DateClose'('DateClose','Deleted','Completed'),
使用BTREE键“Table\u ID”(`Table\u ID`、`Deleted`、`Completed`)
)ENGINE=InnoDB AUTO_INCREMENT=11默认字符集=utf8mb4 COLLATE=utf8mb4_unicode\u ci注释='所有订单信息'
按范围划分(`ID`)
(分区'pYear'值小于(5)ENGINE=InnoDB,
分区'pCurrent'值小于MAXVALUE引擎=InnoDB);
在“订单”中插入(`ID`、`Date`、`DateClose`、`DatePreorder`、`Table` ID`、`Client` ID`、`User` ID`、`Delivery` ID`、`SubTotal`、`Tax1`、`Tax2`、`Tax3`、`Tax4`、`Tax5`、`Tax6`、`Nosale`、`Tax` Rounding`、`Total`、`Device`、`Device`、`Client`客户名称`、`Profile` ID`、`Bill`、`Completed`、`Closed`、`Tax3`、`Tax0`、`Tax0`、`Date`、`Tax0`、`Tax6`、Note`、`IP`、`IP`、`IP`、`IP`、`IP`、`IP数值(1,'2019-08-10 14:13:48',2020-06-08 04:25:15','2019-08-08 07:38:29',55,0,0,0,0,0,1620.9100','0.0000','0.0000','0.0000','0.0000','0.0000','0.0000','0'fli','0,0,1,0','2020-06-13 22:04:35','Odio minima et blanditiis sunt numquam','0,0,255,0);
在“订单”中插入(`ID`、`Date`、`DateClose`、`DatePreorder`、`Table` ID`、`Client` ID`、`User` ID`、`Delivery` ID`、`SubTotal`、`Tax1`、`Tax2`、`Tax3`、`Tax4`、`Tax5`、`Tax6`、`Nosale`、`Tax` Rounding`、`Total`、`Device`、`Device`、`Client`客户名称`、`Profile` ID`、`Bill`、`Completed`、`Closed`、`Tax3`、`Tax0`、`Tax0`、`Date`、`Tax0`、`Tax6`、Note`、`IP`、`IP`、`IP`、`IP`、`IP`、`IP数值(2,'2019-10-11 14:14:52,'2019-08-01 16:12:46,'2020-03-10 17:23:23',20,0,0
(SELECT MAX(orders.Close_Date))
(SELECT MAX(Close_Date) FROM orders)
WHERE
orders.Closed = 1
AND orders.Deleted=0
AND orders.Close_Date =
INDEX(Closed, Deleted, Close_Date) -- in any order
FROM ( SELECT ... ) JOIN ( SELECT ... ) ON ...