MYSQL 临时表 技术教程文章

严重的MySQL性能问题(联接,临时表,文件…)【代码】

我有一张用户表和一张投票表.投票表存储对其他用户的投票.无论好坏,投票表中的一行,都会在两个用户之间的两个方向上存储投票. 现在,问题在于我想列出一些人投票的所有人. 我不是MySQL的专家,但是根据我的想法,由于join语句中的OR条件,它需要查看整个users表(目前44,000行),并创建一个临时表来执行此操作. 目前,bellow查询大约需要两分钟,是的,两分钟即可完成.如果我在join语句中删除OR条件及其后面的所有内容,它会在不到半秒的时间...

mysql中临时表的旧代码TYPE = HEAP出错【代码】

我有一个旧代码正在工作:CREATE TEMPORARY TABLE temp_tree (id INTEGER, parent_id INTEGER) type=HEAP;现在我有mysql 5,这段代码不起作用.在内存中创建临时表的正确方法是什么?我已经搜索到了documentation 但找不到合适的例子.解决方法:在新版本中不推荐使用Type.检查mysql的版本并使用Engine = Memory.

mysql – 不使用临时表更新列数据【代码】

有一个名为EMP的表和一个名为Gender的列,它定义为VARCHAR(1),因此男性为“M”,女性为“F”.开发人员意外地将“M”改为“F”,将“F”改为“M”. 如何在不使用临时表的情况下纠正这个问题?解决方法:您可以使用案例表达式:UPDATE emp SET gender = CASE gender WHEN 'M' THEN 'F' ELSE 'M' END编辑:上面的陈述假设,为简单起见,’M’和’F’是唯一的两个选项 – 没有空值,没有未知数,没有任何东西.更强大的查询可以消除这种假设,...

mysql – 防止复制到临时表(sql)【代码】

我有两张桌子 – 评论和投票:comments(id, text, user_id, page_id) votes(id, value)在投票表中有2,000,000行. 我创建了以下查询:SELECT SUM(votes.value),comments.text,comments.comment_id FROM comments, votes WHERE comments.comment_id = votes.comment_id AND comments.page_id = $page_id GROUP BY comment_id;查询运行大约12秒,这是正常的吗? SHOW PROCESSLIST说它复制到临时表.这似乎很慢,是否有必要使用临时表...

同时创建许多mysql临时表是不是很糟糕?【代码】

我需要进行大量的统计分析,以便向用户提供一些数据.目前,我从mysql捕获数据并通过PHP数组处理它们.但是,mysql临时表相当好(比PHP数组效率更高,速度更快;显然是由于它们的机制). 我的初步解决方案是在每个请求(即连接)上形成一个临时表来导入和处理数据.但是,我不确定同时创建许多临时表是否存在缺陷? 这会给mysql服务器带来问题吗?或者我可以在许多同时请求中使用它作为PHP数组的替代?解决方法:您希望尽可能避免生成临时表:Pre...

mysql实战45讲--- 36 为什么临时表可以重名【代码】【图】

36 为什么临时表可以重名 在上一篇的join优化中,用到了临时表,create temporary table temp_t like t1; alter table temp_t add index(b); insert into temp_t select * from t2 where b>=1 and b<=2000; select * from t1 join temp_t on (t1.b=temp_t.b); 临时表的特征和适合场景 首先区分内存表和临时表: --内存表,指使用memory引擎,建表语法是engine=memory,内存表的数据都保存在内存里,系统重启的时候会被清空,但是表...

MySQL创建临时表时包含哪些数据?

每当MySQL生成临时表时,我一直在阅读有关VARCHAR字段被转换为CHAR字段的信息. 如果我有下表… >超过100K行>十几个VARCHAR列设置为实际长度(例如,10个电话号码)> 5个VARCHAR列设置为15K(长度可以短至20但最高可达15K) 而且,假设我有这个问题…… >返回多个列,包括VARCHAR>加入了其他六个表(不在VARCHAR列上)>按日期和数字ID对行进行排序(即,不在VARCHAR列上)>具有不包含VARCHAR字段的WHERE子句>限制为12行 当MySQL创建一个临时表时,...

MySQL子查询和临时表很慢【代码】

我想优化以下查询:SELECT SQL_NO_CACHE t.topic_id FROM bb_topics t, bb_posters ps WHERE t.topic_id = ps.topic_id AND forum_id IN (2, 6, 7, 10, 15, 20) ORDER BY ps.timestamp desc LIMIT 20Query took 0.1475 sec所以一开始我用INNER JOIN子查询替换了WHERE IN:SELECT SQL_NO_CACHE t.topic_id FROM ( SELECT * FROM bb_topics WHERE forum_id IN (2, 6, 7, 10, 15, 20) ) t INNER JOIN bb_posters ps ON t.topic_id = p...

mysql – 从UNION创建临时表时遇到问题【代码】

我有一个UNION语句,它自己执行得很好:SELECT "1999999999" AS MobileNo, "Test" AS FirstName, "Last" AS LastName, "268" AS TemplateID, "" AS MISC1, "" AS MISC2 UNION SELECT cust.cellp AS MobileNo, acct.firstname AS FirstName, acct.lastname AS LastName, "268" AS TemplateID, "" AS MISC1, "" AS MISC2 FROM acct INNER JOIN cust ON (cust.socsec=acct.socsec)但是,当我尝试用CREATE TEMPORARY TABLE包装它时:CREA...

mysql – 存储函数中的临时表?【代码】

我正在编写一个函数,我需要使用(I hear they don’t exist in MySQL)的TABLE变量或临时表. 但是,似乎临时表似乎只在存储过程中工作,而不是函数.我一直收到这个错误:Explicit or implicit commit is not allowed in stored function ortrigger.我正在尝试构建的是an earlier question of mine的解决方案.它是一个接收开始日期,结束日期和逗号分隔字符串的函数.它首先查找开始日期和结束日期之间的所有月份,并将它们作为单个记录保存...

MySQL Innodb--共享临时表空间和临时文件【代码】

在MySQL 5.7版本中引入Online DDL特性和共享临时表空间特性,临时数据主要存放形式为: 1、DML命令执行过程中文件排序(file sore)操作生成的临时文件,存储目录由参数tmpdir控制,以MY开头2、超大事务提交生成binary log过程中用于数据缓存的临时文件,存储目录由参数tmpdir控制,以ML开头3、使用ROW_FORMAT=COMPRESSED创建的压缩InnoDB临时表,存储目录由参数tmpdir控制,以frm和idb结尾4、没用ROW_FORMAT=COMPRESSED创建的非压缩...

MySQL:如何将存储过程的结果插入到临时表中【代码】

我想将存储过程的结果插入临时表,如下所示:CREATE temporary TABLE NEWBalance (VendorAmount NUMERIC(15,2), UserBalanceAmount NUMERIC(15,2)); INSERT NEWBalance call SP VenAccNo,PeopleId;但这会产生错误:Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'call SP VenAccNo,PeopleId' at line 1有没有办...

如何理解存储过程中已存在的mysql临时表?【代码】

我使用mysql临时表来共享几个存储过程之间的一些中间数据.所有这些过程都使用单个数据库连接.在每个SP中,我需要确定是否已存在mysql临时表.如果它已经存在,那么我将使用它的值,否则SP将创建&填写临时表&其他SP(当然在同一个连接上!)将使用临时表结果. 但我不知道如何检查临时表是否已经存在,我的意思是这样的:IF temporaryTablename EXISTS THEN... ELSE... END IF;任何的想法?解决方法:它在创建表时具有IF NOT EXISTS(13.1.17....

为什么MySQL使用临时表来删除主键?【代码】

使用命令时:ALTER TABLE my_table DROP PRIMARY KEY;状态(当SHOW PROCESSLIST时)显示为:copy to tmp table为什么需要使用tmp表来“删除”主键约束?解决方法:考虑复合主键的情况.在这种情况下,数据库引擎必须从合成密钥创建一个新的聚簇索引,这需要移动行. (请记住,主键通过磁盘对磁盘进行物理排序.)鉴于这种情况很罕见,处理主键已经是整数的特殊情况并不值得.

在MySql中多次访问临时表【代码】

我试图使用临时表作为SELECT语句的中间结果持有者.问题是虽然我无法在其他查询语句中多次访问临时表,我希望这是可能的,即使临时表无用. 是否有替代MySql中的临时表,允许我提取我的SQL语句. 我不能使用存储过程(无法从公司使用的Web框架版本访问它们),我不想使用游标. 编辑: 好吧,我的代码看起来有点像这样: 临时表创建:CREATE TEMPORARY TABLE dates_with_entries (seq INT NOT NULL AUTO_INCREMENT PRIMARY KEY,datum VARCHAR...

Mysql如何删除以 sql- 开头的临时表

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow??????????????? author:skatetime:2014/09/28 Mysql如何删除以“#sql-”开头的临时表 现象:在重建索引后,发现Mysql服务器的磁盘空间快满了在用如下命令重建索引mysql> alter table skatetab add unique index(id, uid), drop primary key, add primary key(uid, id);在重...