草庐IT

query-optimization

全部标签

sql - 如何在 MYSQL 中优化此查询?需要做什么

请向下滚动到“25/08/2010更新”。我有一个已转换为View的查询。它运行非常缓慢,因为(据我所知)连接表上的索引存在几个问题。explainselect*fromview_ed_abc_print如您所见,我有一个使用where、temporary和filesort的表“a”,其中包含4659行,据我所知,这意味着它必须为返回的每一行运行4659行。我省略了查询,因为它真的很长,而且这里的格式很糟糕(它来自一个View,所以导致了一些问题有人有什么想法吗?感谢您到目前为止的回答。我已经为所有外键创建了索引,并向publicationtypes和audittypes表添加了一个主

mysql - 有没有更好的索引来加速这个查询?

以下查询使用临时和文件排序。如果可能的话,我想避免这种情况。SELECTlib_name,description,count(seq_id),floor(avg(size))FROMlibrarieslJOINsequencesON(l.lib_id=s.lib_id)WHEREs.is_contig=0andforeign_seqs=0GROUPBYlib_name;EXPLAIN说:id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra1,SIMPLE,s,ref,libseq,contigs,conti

mysql - 哪些字段应该一起索引?通过...分组?订购?

我正在尝试加快我目前拥有的查询:SELECT*FROM`events`WHERE(field1='somestring'orfield1='somestring')andis_current=trueGROUPBYevent_idORDERBYpub_date这大约需要30秒。field1是一个varchar(150)我目前正在编制索引field1,is_current,event_id,pub_data慈善机构,pub_date,is_current以及所有字段单独...我真的不确定应该将哪些字段一起索引,当我删除orderby时,查询速度最高可达8秒左右,如果我同时删除orderb

mysql - 使用 GROUP BY 按时函数优化 MySQL 查询

我有以下查询:SELECTlocation,step,COUNT(*),AVG(foo),YEAR(start),MONTH(start),DAY(start)FROMtableWHEREjobid='xxx'ANDstartBETWEEEN'2010-01-01'AND'2010-01-08'GROUPBYlocation,step,YEAR(start),MONTH(start),DAY(start)最初我在单个列上有索引,例如jobid和start,但很快意识到MySQL在选择中只真正支持每个表的一个索引。因此,它将使用jobid索引,然后进行相当大的扫描以按start范围过滤掉

MYSQL优化使用临时;使用文件排序!!! -> 帮助

伙计们,我已经尝试了一段时间了,但我无法优化Usingtemporary;使用我的EXPLAIN查询中的文件排序。好的,我有这个查询:SELECTa.adid,a.adtitle,a.addesc,scat.subcatnameFROMadsaINNERJOINcitiesctONa.cityid=ct.cityidINNERJOINsubcatsscatONa.subcatid=scat.subcatidINNERJOINcatscatONscat.catid=cat.catidWHEREa.enabled='1'ANDa.verified='1'GROUPBYa.adidORDER

mysql - Wordpress - 如何输出 query_posts 使用的最后一个查询?

我试图获取特定日期(即今天)的所有帖子,但由于某种原因它只返回了一个。$wp_posts=query_posts(array('cat'=>4,'post_status'=>array('any','publish','future','inherit','revision','pending'),'year'=>'2011','monthnum'=>'10','day'=>'25','order_by'=>'post_date','order'=>'ASC'));这应该将今天的所有帖子都发布在一个类别下,但无论出于何种原因,它只输出1个帖子,我不知道为什么。起初我以为这可能是永久链接

mysql - 优化 MySQL - WHERE 和 ORDER BY 使用不同的列

我有一个115MByte、1,600,000行的表,用于存储房价和坐标。“SELECT”查询花费的时间太长。我想知道是否有人可以建议加快速度的方法。我的表的稍微简化的版本....CREATETABLE`prices1`(`price`INT(10)NOTNULL,`address`VARCHAR(127)NOTNULL,`lat`FLOAT(6,4)NOTNULLCOMMENT'GPSlatitude',`lng`FLOAT(6,4)NOTNULLCOMMENT'GPSlongitude',INDEX`lat`(`lat`),INDEX`price`(`price`))ENGINE=M

mysql - 我应该一直使用 CREATE VIEW 而不是 JOIN

我有以下查询:SELECTt.*,a.hitsASahitsFROMt,aWHERE(t.TRACKLIKE'xxx')ANDa.A_ID=t.A_IDORDERBYt.hitsDESC,a.hitsDESC运行非常频繁。表t有大约1500万行,a有大约300万行。当我对上述查询执行EXPLAIN时,我收到一条说明它总是创建一个临时表。我注意到根据上述查询创建一个临时表花了很长时间。而且,这已经完成了很多时间。因此,我想知道我是否使用上面的语句创建了一个View:CREATEVIEWv_t_aSELECTt.*,a.hitsASahitsFROMt,aWHEREa.A_ID=t.A_I

php - MySQL "Fire-And-Forget"INSERT/UPDATE/DELETE - mysql_unbuffered_query 用法是否可取?

我们有很多我们认为是“即发即弃”的查询。从某种意义上说,这些只是记录插入、更新等。不那么重要的事情,以及从未在用户看到的前端使用的数据。这听起来像是mysql_unbuffered_query的理想情况。这是否可取?我们正在使用innodb,因此无法使用INSERTDELAYED之类的东西。谢谢! 最佳答案 看完http://www.php.net/manual/en/mysqlinfo.concepts.buffering.php:Followingthesecharacteristicsbufferedqueriesshould

mysql - 推荐 "to optimize the response time of an SQL query"

我想知道优化包含超过2.000.000条记录的表的SQL查询响应时间的最佳解决方案是什么作为解决方案,我想到了创建一个SQLView的虚拟表(其实我更喜欢mysql在今年创建的行中早早的搜索,因为这个应用的数据是基于季节的。)有没有更好的解决方案或推荐?例如搜索租金12的所有租金行之前=>select*fromrent_lines其中rent_id=12现在=>我创建了一个ViewCREATEVIEWv_rent_linesASSELECTrent_id,category_id,customer_id,amount..Whererent_linesFROMcreated_at>=(se