草庐IT

mysql - 如何估算MySQL查询所需的临时磁盘空间?

我有一组非常复杂的SELECT查询,它们使用大量磁盘空间(我在运行时从df-h看到了这一点)。有没有办法在开始查询之前估计查询所需的临时磁盘空间? 最佳答案 您可以使用EXPLAIN关键字来描述您的连接将如何影响将连接在一起的行数。如果key不存在,这也将帮助您正确使用key。Explain会在它认为需要使用临时表(磁盘空间)时告诉您。根据要连接的行的大小,您可以粗略估计您的磁盘空间需求。请参阅此处解释的文档:http://dev.mysql.com/doc/refman/5.0/en/explain.html但基本上,只需在您的选

mysql - 固定使用位置;使用临时的;使用文件排序

我有两个简单的表:CREATETABLEcat_urls(Idint(11)NOTNULLAUTO_INCREMENT,SIL_Idint(11)NOTNULL,SiteIdint(11)NOTNULL,AsCatIdint(11)DEFAULTNULL,Hrefvarchar(2048)NOTNULL,ReferrerHrefvarchar(2048)NOTNULLDEFAULT'',AddedOndatetimeNOTNULLDEFAULTCURRENT_TIMESTAMP,GroupIdint(11)DEFAULTNULL,PRIMARYKEY(Id),INDEXSIL(SIL_

mysql - 将 CSV 导入到 MySQL 中的临时表

我有一个相当大的CSV文件,每个月都会发生变化,每行大约有450个数据点。我还需要在将数据插入永久表之前对其进行操作。所以我的计划是将它导入到一个临时表中,对其进行操作,然后插入数据。但是,我找不到任何关于是否/如何将CSV导入临时表的信息(或者,某种导入动态CSV的方法——第一行在CSV中有列标题)。我尝试创建一个包含一列的临时表,然后导入CSV,但它似乎没有导入它。到目前为止,这是我尝试过的:DROPTEMPORARYTABLEIFEXISTStmp_import;CREATETEMPORARYTABLEtmp_import(idINTEGERNOTNULLAUTO_INCREME

mysql - 如何检测 MySQL 中的临时故障?

我正在编写一个python实用程序来在MySQL服务器上执行大量请求。其中一项要求是,如果我们检测到临时故障(例如,如果网络暂时关闭),则重试查询(一段时间后)。我们使用MySQLConnector/Python.基本思路是:try:cursor=cnx.get_cursor()except:#Iferroristemporary,waitandretry#elsestoptry:cursor.execute(request)except:#Iferroristemporary,waitandretry#elsestop游标的创建和请求是分开处理的,以简化错误处理。问题是似乎很难检测到

php - MySql 临时表 VS View VS php 数组

我目前创建了一个类似facebook的页面,它从不同的表中提取通知,比如说大约8个表。每个表都有不同的结构和不同的列,所以首先想到的是我将有一个全局表,如目录,并在每次新点击时刷新它。我知道插入是资源密集型的,但我希望因为它是一个静态表,我可能每100个访问者只添加一个新记录,所以我认为“可能”我可以摆脱这个,但我错了。我成功地从三个人敲打网站的过程中解决了僵局。所以无论如何,现在我必须用不同的方法重做它。最初我打算做观点,但我对观点有疑问。所选表必须包含用户ID。这是来自php的select语句的示例:$get_events="SELECTid,".$userId.",'admin_

sql - 优化MySQL临时表(内存表)配置?

首先,我是mysql优化新手。事实上,我在我的Web应用程序(每秒大约400个查询)中有一个使用GROUPBY的查询,我无法避免,这就是创建临时表的原因。我的配置是:max_heap_table_size=16Mtmp_table_size=32M结果:临时表到磁盘的百分比+-12.5%然后我根据thispost更改了我的设置max_heap_table_size=128Mtmp_table_size=128M结果:临时表到磁盘百分比+-18%结果不是预期的,不明白为什么。tmp_table_size=max_heap_table_size错了吗?不应该增加尺寸吗?查询SELECTim

mysql - 在 mysql 中使用临时文件排序是个坏主意吗?

我正在尝试优化我的mysql查询以避免“使用临时文件排序”。我需要一些帮助。第一的;这是解释这是查询selectpf.*,m.login,m.avatarfromprofile_friendspf,membersmwherepf.friend_id=m.idandpf.member_id=16586orderbym.lastLogindesclimit0,24;mysql>EXPLAINselectpf.*,m.login,m.avatarfromprofile_friendspf,membersmwherepf.friend_id=m.idandpf.member_id=16586o

mysql - 如何在 where 子句中使用临时列

为什么我不能在where子句中使用临时列?例如,这个查询:Selectproduct_brand,(CASEWHENCOUNT(product_brand)>50THEN1ELSE0END)ASbrand_countFROMproductsWHERE1GROUPBYproduct_brand这会出现两列,一列称为product_brand,一列称为brand_count。brand_count是动态创建的,始终为1或0,具体取决于该品牌是否有50或产品。所有这一切对我来说都很有意义,除了我不能仅在brand_count=1时选择,如下面的查询所示:Selectproduct_brand

MySQL 使用 auto_increment id 创建临时表并选择查询

想要创建一个临时表,其中有一个auto_increment字段加上一个必须从另一个表中选择的字段。这是我有的(不起作用)CREATETEMPORARYTABLEtmp(idINTEGERNOTNULLAUTO_INCREMENTPRIMARYKEY,(SELECTvalueNameASvalueNameFROMsometableWHEREsometable.somevalue='00'));它们自己工作,但可以获得正确的语法来完成这两项工作CREATETEMPORARYTABLEtmp(idINTEGERNOTNULLAUTO_INCREMENTPRIMARYKEY)CREATETEM

MySQL临时变量赋值

我有一张如下所示的表格。CREATETABLEPeople(PeopleIdINTNOTNULLPRIMARYKEYAUTO_INCREMENT,NameVARCHAR(255),AgeINT);INSERTINTOPeople(Name,Age)VALUES('Sam',25),('John',24),('Ria',14),('Diya',23),('Topel',19),('Mac',45);我创建了一个过程,其中我出于某种目的使用临时变量age。DROPPROCEDUREIFEXISTSSample;CREATEPROCEDURESample()BEGINSELECT@Age=A