Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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
Mysql 如何通过GROUP BY问题加快查询搜索速度?_Mysql - Fatal编程技术网

Mysql 如何通过GROUP BY问题加快查询搜索速度?

Mysql 如何通过GROUP BY问题加快查询搜索速度?,mysql,Mysql,当从表中选择所有列时,我遇到了使用GROUPBY的问题,结果在速度方面性能很差 Select * from employee group by customer_id; 上面的查询不会被更改,它是强制性的并且是固定的。它需要17720ms的时间,而结果所需的时间必须更短,这是我想要的结果,不到1分钟。因为表有很多列和记录,所以在查询搜索中花费了很多时间。有没有解决这个问题的方法。谢谢。因为您的查询非常简单,这看起来几乎毫无意义。。。在employee表中不会有重复的employee id,并且

当从表中选择所有列时,我遇到了使用GROUPBY的问题,结果在速度方面性能很差

Select * from employee
group by customer_id;

上面的查询不会被更改,它是强制性的并且是固定的。它需要17720ms的时间,而结果所需的时间必须更短,这是我想要的结果,不到1分钟。因为表有很多列和记录,所以在查询搜索中花费了很多时间。有没有解决这个问题的方法。谢谢。

因为您的查询非常简单,这看起来几乎毫无意义。。。在employee表中不会有重复的employee id,并且执行groupby仍然会返回每一行、每一列

不过,也就是说,要优化分组方式,您需要在该列上建立索引。。。我认为它已经存在,因为员工ID可能是表的主键

此外,您没有任何聚合列可以保证分组依据。你只是想找一个特定的员工吗?如果是这样,那将是一个不同的查询,使用WHERE子句作为您要查找的条件

反馈

您更新了问题,并按客户ID(而非员工ID)进行了分组。好的,但是你说的分组到底意味着什么

或者。。。您是否希望由客户订购。。。换句话说,我想要一份所有员工的列表,但希望他们按照与之相关联的客户进行排序。。。如果是这样的话,你会想要

select *
   from employees
   ORDER BY
      customerID, 
      employeeLastName,
      employeeFirstName
没有看到您的表结构,但如果employee表中确实有一列与之关联的客户ID,则此查询将按客户将同一客户的所有员工放入公共预排序输出中,然后在该客户中,按员工名称(最后、第一)排序


如果您有另一个表,其中包含员工和客户之间的关系,我们也需要查看该表,以便更好地提供答案。

如果您有大量记录,则带有大量类型(如BLOB、TEXT、NVARCHAR(200或更多))的列将大大降低查询速度。我建议检查是否真的有必要从一开始就加载它们


而且,你的分组看起来很奇怪。你到底想用它实现什么?

分组方式不仅奇怪,而且是错误的。如果不指定
分组依据中的所有非聚合列,则每个列的值似乎都是随机的。通过或解释您认为需要它的原因来删除该组

或者可能“*”不正确。好的,您不能向我们显示真实的列名,至少向我们显示SELECT的真实模式,即使它有虚假的列名


我也不明白你为什么称之为“搜索”。没有WHERE子句,即“搜索”条件所在的位置。

如果不需要所有列,则只需选择所需的列。例如:从员工处选择*比从员工处选择emp_id、emp_名称、emp_sal花费更多的时间。您可以阅读本文以了解更多内容。请向我们展示您的
CREATE TABLE
语句。另一个问题:您的标题为“加速查询搜索”,但没有任何搜索:-)对不起,我不能给您看,因为这是我公司的机密和保护。请考虑。谢谢。Ops,我犯了一个愚蠢的错误,没有使用员工id,而是应该是客户id。谢谢您的建议。@JCChan,请参阅修订抱歉,我不能给你看,因为这是我公司的机密和保护。请考虑一下。Thanks@JCChan,您不必显示实际数据,也不必显示完整的表结构,只需显示关系的相关表/列即可。我敢肯定,即使没有更多的私有表结构,也有100种是部分用于帮助解决方案的。很多地方都有员工表、客户表和关系表。这很常见。他们背后的实际数据是机密部分。我们不要求任何类似账号的信息,但知道一列是“customerName”或“company”是您可以披露的一些基本信息。