Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用filesort的MySql组查询优化_Mysql_Sql_Group By_Query Performance_Filesort - Fatal编程技术网

使用filesort的MySql组查询优化

使用filesort的MySql组查询优化,mysql,sql,group-by,query-performance,filesort,Mysql,Sql,Group By,Query Performance,Filesort,我有一张这样的桌子: 创建“购买”表( `事实购买id`二进制(16)不为空, `purchase_id`int(10)未签名不为空, `purchase_id_primary`int(10)无符号默认为空, `person_id`int(10)未签名非空, `person_id_owner`int(10)未签名非空, `服务_id`int(10)无符号非空, `事实计数'int(10)无符号非空默认值'0', `事实类型'tinyint(3)无符号非空, `日期_事实`日期不为空, `purc

我有一张这样的桌子:

创建“购买”表(
`事实购买id`二进制(16)不为空,
`purchase_id`int(10)未签名不为空,
`purchase_id_primary`int(10)无符号默认为空,
`person_id`int(10)未签名非空,
`person_id_owner`int(10)未签名非空,
`服务_id`int(10)无符号非空,
`事实计数'int(10)无符号非空默认值'0',
`事实类型'tinyint(3)无符号非空,
`日期_事实`日期不为空,
`purchase_name`varchar(255)默认为空,
`激活价格`十进制(7,2)无符号非空默认值'0.00',
`激活\价格\总计`十进制(7,2)无符号非空默认值'0.00',
`更新价格“十进制(7,2)无符号默认值“0.00”,
`续订价格总计`十进制(7,2)无符号非空默认值'0.00',
`激活成本`十进制(7,2)无符号默认值'0.00',
`激活成本总计`十进制(7,2)无符号非空默认值'0.00',
`更新成本“十进制(7,2)”未签名默认值“0.00”,
`续订成本总计`十进制(7,2)无符号非空默认值'0.00',
`date_created`时间戳不为空默认当前时间戳,
主键(`fact\u purchase\u id`),
键'purchase\u id\u idx'('purchase\u id'),
关键字“person\u id\u idx”(“person\u id”),
键“person\u id\u owner\u idx”(“person\u id\u owner”),
键'service\u id\u idx'('service\u id'),
键'fact\u type\u idx'('fact\u type`),
键“续订价格”idx”(“续订价格”),
键“续订成本”idx)(“续订成本”),
键“续订价格\年份\ idx”(“续订价格\年份”),
键“续订成本/年度idx”(“续订成本/年度”),
键'date\u created\u idx`('date\u created`),
键'purchase\u id\u primary\u idx'('purchase\u id\u primary'),
键'fact\u count'('fact\u count'),
键“更新价格年度总计idx”(“更新价格总计”),
键“续订成本年度总计idx”(“续订成本总计”),
使用BTREE键“date\u fact”(“date\u fact”),
约束`purchase\u person\u fk`外键(`person\u id`)在删除时引用`person`(`person\u id`),在更新时不执行任何操作,
约束'purchase\u person\u owner\u fk'外键('person\u id\u owner')在删除时引用'person'('person\u id`),在更新时不执行任何操作,
约束`purchase\u service\u fk`外键(`service\u id`)在删除时引用`service`(`service\u id`),在更新时不执行任何操作
)ENGINE=InnoDB默认字符集=utf8;
我正在启动此查询:

SELECT p.date_fact, UNIX_TIMESTAMP(p.date_fact),
       COUNT(DISTINCT p.purchase_id) AS Num
FROM purchase p
WHERE p.date_fact >= '2017-01-01' AND
      p.date_fact <= '2017-01-31' AND
      p.fact_type = 3 AND
      p.purchase_id_primary IS NULL
GROUP BY p.date_fact;
选择
purchase.date\u事实,
UNIX\u时间戳(购买日期\u事实),
计数(不同的购买.购买id)为Num
从…起
购买
哪里
purchase.date\u fact>=“2017-01-01”
和purchase.date\u fact用于此查询:

SELECT p.date_fact, UNIX_TIMESTAMP(p.date_fact),
       COUNT(DISTINCT p.purchase_id) AS Num
FROM purchase p
WHERE p.date_fact >= '2017-01-01' AND
      p.date_fact <= '2017-01-31' AND
      p.fact_type = 3 AND
      p.purchase_id_primary IS NULL
GROUP BY p.date_fact;
选择p.date\u事实、UNIX\u时间戳(p.date\u事实),
计数(不同的p.purchase\u id)为Num
从购买p
其中p.date_事实>='2017-01-01'和
p、 日期与事实