Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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
Php 如何使用索引优化此MySQL查询_Php_Mysql - Fatal编程技术网

Php 如何使用索引优化此MySQL查询

Php 如何使用索引优化此MySQL查询,php,mysql,Php,Mysql,我有这样一个问题: SELECT product_id, product_amount,count(product_amount) as order_status FROM order_history GROUP BY product_amount, product_id ; 如何为表编制索引?任何人请提供帮助。产品id将是您的主键,因此它应该已经被索引。如果您想将产品id添加为索引,以下是语法: ALTER TABLE `order_history` ADD INDEX `produc

我有这样一个问题:

SELECT product_id, product_amount,count(product_amount) as order_status
 FROM order_history 
 GROUP BY product_amount, product_id ;

如何为表编制索引?任何人请提供帮助。

产品id将是您的主键,因此它应该已经被索引。

如果您想将产品id添加为索引,以下是语法:

ALTER TABLE `order_history` ADD INDEX `product_id` (`product_id`);

如果要将
product\u id
添加为索引,并且
product\u id
不能重复,则使用此查询

ALTER TABLE `order_history` ADD UNIQUE INDEX ( `product_id` )
ALTER TABLE `order_history` ADD INDEX ( `product_id` )

如果您想将
product\u id
添加为索引,并且
product\u id
可能是重复的,那么您可以使用此查询

ALTER TABLE `order_history` ADD UNIQUE INDEX ( `product_id` )
ALTER TABLE `order_history` ADD INDEX ( `product_id` )

此查询不正确,因为您正在进行计数(product_amount),它将只返回一行,而其他记录将返回多行。此外,在您的
SELECT
子句中,您将
作为订单状态
,该状态不应包含空格或引号。@ChristianMark更改了查询。我如何索引该表?产品金额的计数如何可能表示订单状态?我不太理解为什么您必须为同一字段选择
产品金额
。你能在这里说明你想要实现什么吗?请提供您的架构、示例数据和示例输出。产品id不是主键