我正在编写一组从大型数据集中聚合数据的存储过程。
main of存储过程调用数据所在的另一(些)服务器。数据按步骤计算并存储在多个临时表(当前是全局临时表)中,然后拉到我所在的服务器(这是由于链接服务器的设置方式所致)。
现在,我正在尝试编写动态SQL来创建具有唯一标识符的临时表,因为可能有多个人同时运行存储过程。然而,由于这个过程的子步骤很多,所以它变得越来越复杂,所以我想知道我是不是想太多了。
我的问题是,如果我简化并只使用本地临时表,我是否会遇到问题,因为这些表将具有相同的名称?注意:用户可能具有相同的登录用户名。
我有一个MySQL存储例程,在这里我想使用一个临时数据表来存储中间结果。为了避免创建一个“正常”表,我想使用一个内存中的表,当例程执行完成后,这个表就会消失。我是一个MySQL新手,但我想这是个好办法:
DROP TABLE IF EXISTS MyInMemoryTable;
CREATE TABLE MyInMemoryTable ( numberField int ) ENGINE = MEMORY;
...
DROP TABLE IF EXISTS MyInMemoryTable;
我的例程只适用于一个用户,但是如果多个用户同时运行例程,我会感到紧张吗?
MyInMemoryTable
我正在连接到MySQL的读副本实例(实际上,Google )。JDBC驱动程序似乎能够创建临时表,但无法将数据插入其中。但是,使用另一个客户机(在我的例子中是MySQL工作台),我能够创建数据并将数据插入到临时表中。看起来像JDBC驱动程序中的bug吗?有什么办法能让它发挥作用?
这里是我得到的例外(由于公司策略,我不能发布整个堆栈跟踪):
Caused by: java.sql.SQLException: The MySQL server is running with the --read-only option so it cannot execute this statement
我希望在MySQL中创建一个视图,以便数据分析用户能够轻松地过滤大量数据,但是当我创建一个具有任何分组的视图时,整个视图都会被扫描,使得该视图在性能上毫无用处。
一个简单的例子
值表-约35亿行,每月分区
SELECT
Timestamp,
DeviceId,
SUM(Entry)
FROM Value v
WHERE DeviceId = 123456 AND Timestamp >= '2020-08-01'AND Timestamp <= '2020-08-30'
GROUP BY Timesta