考虑到在连接到ODBC的客户端应用程序中有一长串键,那么在MySql中处理许多行的好方法是什么?
注意:我的经验主要是Server,所以我知道一点,只是不知道具体的MySQL。
任务是从9个表中删除一些行,但我可能有5000对以上的密钥对。
首先,我使用了一种简单的方法,可以循环遍历所有键,并针对每个表为每个键提交一条语句,例如:
DELETE FROM Table WHERE Key1 = 123 AND Key2 = 567 -- and 8 more tables
DELETE FROM Table WHERE Key1 = 124 AND Key2 = 568 -- and 8 mor
我有MySQL5.5,我创建了一个存储过程
CREATE DEFINER=`root`@`%` PROCEDURE `refresh_mobileTemp`()
BEGIN
DROP TABLE IF EXISTS mobileTemp;
CREATE TEMPORARY TABLE mobileTemp AS
(SELECT distinct
...
);
END
正在运行
call refresh_mobileTemp();
创建临时表。
然后我删除了临时表并创建了一个事件:
CREATE EVENT `schedulerMobileTemp`
ON SCHEDULE ev
我有一个MySQL存储例程,在这里我想使用一个临时数据表来存储中间结果。为了避免创建一个“正常”表,我想使用一个内存中的表,当例程执行完成后,这个表就会消失。我是一个MySQL新手,但我想这是个好办法:
DROP TABLE IF EXISTS MyInMemoryTable;
CREATE TABLE MyInMemoryTable ( numberField int ) ENGINE = MEMORY;
...
DROP TABLE IF EXISTS MyInMemoryTable;
我的例程只适用于一个用户,但是如果多个用户同时运行例程,我会感到紧张吗?
MyInMemoryTable
我对mysql不是很了解。所以如果这是个愚蠢的问题请原谅。
我今天接到了一个来自我的DBA的电话,我的应用程序创建的临时表数量激增。
但我没有显式地创建任何临时表。
在故障排除后,我们发现每次在子查询中使用文本colomn时,都会创建一个临时表。
作为开发人员,使用子查询和文本列创建临时表使我感到困惑。
我的问题是,作为开发人员,我如何理解查询何时会创建临时表(在后台)。
我做了一些搜索,发现我可以做一些类似的事情
show GLOBAL status like 'created_tmp_disk_tables'
但它告诉我什么呢?如何知道我的查询是否导致了临时表。
我正在连接到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