我有以下查询:
SELECT p2c.pid AS productNumber,
p.name AS productName
, (
SELECT COUNT(*)
FROM products2customers
WHERE pid = p2c.pid
) AS registered
, (
SELECT COUNT(*)
FROM products2customers
WHERE pid = p2c.pid
AND date_add(from_unixtime(purchased), INTERVAL 5 YEAR) >= CURDATE()
) AS inWarranty
, (
SELECT COUNT(*)
FROM products2customers
WHERE pid = p2c.pid
AND date_add(from_unixtime(purchased), INTERVAL 5 YEAR) < CURDATE()
) AS outOfWarranty
, (
SELECT DATE_FORMAT( MAX( from_unixtime(purchased) ), '%d.%m.%Y')
FROM products2customers
WHERE pid = p2c.pid
) AS lastPurchased
, (
SELECT DATE_FORMAT( date_add( MAX( from_unixtime(purchased) ), INTERVAL 5 YEAR), '%d.%m.%Y')
FROM products2customers
WHERE pid = p2c.pid
) AS warrantyUntil
FROM (
SELECT DISTINCT
p2c.pid
FROM
products2customers p2c
) AS p2c
JOIN
products p
ON
p.id = p2c.pid
ORDER BY
inWarranty DESC
查询在具有25.000行的数据库表上执行。该查询的执行时间约为40秒。结果将显示在网页上,因此等待40秒以获取结果并不是很好。
有没有一种方法可以执行此查询并保存其输出?因为如果每天晚上执行此查询就足够了。
最好的方法是什么?我应该创建一个cronjob并执行此查询并将结果写入数据库吗?或者,还有更好的方法?
或者我可以优化此查询以使其更快?
我认为所有这些相关的子查询都在杀死。试试这个:
SELECT p2c.pid AS productNumber,
p.name AS productName,
COUNT(*) AS registered,
SUM(date_add(from_unixtime(purchased), INTERVAL 5 YEAR) >= CURDATE()) AS inWarranty,
SUM(date_add(from_unixtime(purchased), INTERVAL 5 YEAR) < CURDATE()) AS outOfWarranty,
DATE_FORMAT( MAX( from_unixtime(purchased) ), '%d.%m.%Y') AS lastPurchased,
DATE_FORMAT( date_add( MAX( from_unixtime(purchased) ), INTERVAL 5 YEAR), '%d.%m.%Y') AS warrantyUntil
FROM products2customers p2c
JOIN products p ON p.id = p2c.pid
GROUP BY p2c.pid
ORDER BY inWarranty DESC
想知道如何看待mysql json专栏? category_ids例如) [19, 102, 108] 如果我想搜索包含类别id 102的产品列表,如何使用queryDSL进行查询? 我尝试了JsonNode类型,但它不起作用。
问题内容: 我正在使用MySQL数据库,我想知道是否同时进行多个(500个或更多)查询以便从多个表中获取信息,这些查询如何处理?顺序还是并行? 问题答案: 查询总是在多个会话(即客户端连接)之间并行处理。单个连接上的所有查询都一个接一个地运行。可以根据您可用的服务器资源来配置多个连接之间的并行度。 通常,某些操作在各个查询会话之间被保护(称为事务)。这些由InnoDB后端支持,但MyISAM表不受
问题内容: 我有一个查询,看起来像这样: ORDER BY如何运作?它会排序所有记录,然后获取前20条记录,还是会获取20条记录并按字段排序? 如果是最后一篇,则不能保证您会真正获得最新的20篇文章。 问题答案: 它将先排序,然后得到前20。数据库还将处理子句中的所有内容。
问题内容: 我正在制作一个运行ASP.NET WebService的Android应用程序。Webservice发送一个JSON对象,应用程序解析该对象并显示在屏幕上。在一种情况下,JSON对象太大,并且出现Findered Binder Transaction错误。我的解决方案是获取该JSON对象并将其嵌入到应用程序代码中,这样就无需从服务器获取该JSON对象。你能告诉我我可以做的其他事情吗?还
问题内容: 我收到此异常: 源自此代码: 哪里是。 所以这对我来说很好- 我知道数据库中存在零日期,我需要能够读取这些日期并将其转换为下游数据结构中的适当数据(可能为空)。问题是我不知道如何检索它并得到“软”错误。我考虑过将这一行包装在SQLException的try / catch中,但了解这会破坏ResultSet的有效性。 是否有可能以其他方式读取此值而不会引发SQLException? 问
我正在处理非常大的文件,并使用Spring集成来处理它们。我想知道使用Spring集成和提供的DSL处理这些问题的最佳和最有效的方法是什么。我有一个测试CSV文件,它有大约30K条记录,我正在使用filespliter组件将每一行读入内存,然后根据分隔符再次拆分,以获得我需要的列。 下面的代码段。