gpt4 book ai didi

mysql - MYSQL中,如何根据查询中未指定的参数汇总查询结果?

转载 作者:行者123 更新时间:2023-11-30 23:25:48 28 4
gpt4 key购买 nike

我有一个包含大约 400 万行的 MySQL 表。假设表格如下:

Person 表中的列:

  • ID
  • 姓名
  • 年龄
  • 婚姻状况
  • 教育水平
  • '所在国家/地区'
  • '描述'

当我基于Age 运行查询时,我还想获得具有相同年龄、不同婚姻状况以及不同“教育水平”和“所在国家/地区”的人数的汇总.

当我根据年龄和教育水平运行查询时,我还想获得具有相同年龄和教育水平、不同婚姻状况以及不同“所在国家/地区”的人数的汇总。

例如,发出的查询将是 SELECT * FROM Person WHERE Age = 27;。我还想要由 SELECT Education Level, COUNT(*) FROM Person WHERE Age = 27 GROUP BY Education Level;SELECT Location Country, COUNT(*) FROM Person WHERE 产生的结果Age = 27 GROUP BY Location Country;

此外,当我必须根据描述中的关键字进行搜索并希望对其他每一列进行汇总计数时,这对我来说变得更具挑战性。我正在开发的应用程序是一种搜索引擎。这可以在 Ebay 等网站上看到,

我可以单独运行这些查询。但是,对于 400 万行,GROUP BY 查询将花费大量时间。这是一个 Internet 应用程序,查询应该会在几秒钟内完成。

如有任何帮助,我们将不胜感激。

最佳答案

您可以在一个查询中同时执行这两项操作

SELECT p.*, count(p2.id)  
FROM Person p, Person p2
WHERE p2.Age = p.age and p2.marital != p.marital and p1.education != p2.education
GROUP BY p1.id

在这种情况下,我建议将数据保存在memcache 缓存中。如果新数据插入到表中或在某个过期时间后,您可以使缓存过期,以避免长时间执行查询。另一个改进是使用 LIMIT 来减少 DB 返回的行数,如下所示:

SELECT p.*, count(p2.id)  
FROM Person p, Person p2
WHERE p2.Age = p.age and p2.marital != p.marital and p1.education != p2.education
GROUP BY p1.id
LIMIT 10

关于mysql - MYSQL中,如何根据查询中未指定的参数汇总查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13427376/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com