jjzjj

mysql - 使用 explain extended 理解 mysql 查询的性能

我正在尝试了解使用MySQL的SQL查询的性能。由于PK上只有索引,查询未能在10分钟内完成。我已经在where子句(时间戳、主机名、路径、类型)中使用的所有列上添加了索引,查询现在在大约50秒内完成——但是对于看起来不太复杂的查询来说,这似乎仍然很长时间。所以,我想了解导致此问题的查询是什么。我的假设是我的内部子查询以某种方式导致必要的比较数量激增。涉及到两个表:存储(~5,000行/4.6MB)和机器(12行,查询如下:SELECTT.hostname,T.path,T.used_pct,T.used_gb,T.avail_gb,T.timestamp,machines.typeA

MySql 拒绝使用索引

我是查询优化的新手,所以我承认我还不了解所有内容,但我不明白为什么即使是这个简单的查询也没有按预期进行优化。我的table:+------------------+-----------+------+-----+-------------------+----------------+|Field|Type|Null|Key|Default|Extra|+------------------+-----------+------+-----+-------------------+----------------+|tasktransitionid|int(11)|NO|PRI|NU

mysql - 怎么可能有一个好的 EXPLAIN 和一个慢查询?

怎么可能像下面这样在EXPLAIN中有一个好的计划并有一个缓慢的查询。几行,使用索引,没有文件排序。查询在9秒内运行。主表有大约50万行。当我在该表中有25万行时,查询在有什么建议吗?查询(1.可以根据用户选择启用注释的字段。2.没有FORCEINDEX我得到14s。3.SQL_NO_CACHE我用来防止错误结果):SELECTSQL_NO_CACHEp.property_id,lct.loc_city_name_pt,lc.loc_community_name_pt,lc.loc_community_image_num_default,lc.loc_community_gmap_lo

mysql - 运行EXPLAIN时,如果key的字段值不为null,Extra为空,是否使用了key?

在没有索引的情况下运行此EXPLAIN查询时EXPLAINSELECTexec_date,100*SUM(CASEWHENcached='no'THEN1ELSE0END)/SUM(1)cached_no,100*SUM(CASEWHENcached!='no'THEN1ELSE0END)/SUM(1)cached_yesFROMrequestsGROUPBYexec_date这是输出idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1SIMPLErequestsALLNULLNULLNULLNULL478619Using

mysql - 缓慢的 MySQL 查询

我在MySQL中有一个查询(在存储过程中使用),它按名称和另一个字段进行搜索。当我使用这些搜索参数的不同组合时,我会很快得到结果(在1到2秒之间),但对于某些特定值,我会得到一个需要9秒才能在生产网站上返回结果的查询。以下是我从EXPLAIN语句中得到的结果:id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra--------------------------------------------1,SIMPLE,Names,ref,IX_Name,IX_Name,17,const,3173,Usingwh

sql - EXPLAIN 和 COUNT 返回两个不同的值

我在做:explainselect*fromcalibration;它说52133456345632行当我这样做时:selectcount(*)fromcalibration;我得到52134563456961谁能解释一下这是怎么回事? 最佳答案 表统计信息(由EXPLAIN使用)基于可能不准确的系统缓存值。http://dev.mysql.com/doc/refman/5.1/en/using-explain.html说:ForInnoDBtables,thisnumberisanestimate,andmaynotalwaysb

sql - 在mysql中, "explain ..."总是安全的吗?

如果我允许一组用户提交"explain$whatever"到mysql(通过使用DBD::mysql的Perl的DBI),是否有任何用户可以可以放入$whatever会导致任何数据库更改,泄漏重要信息,甚至导致显着的数据库负载?如果是,怎么办?我知道通过"explain$whatever"可以找出存在哪些表/列(不过您必须猜测名称)以及大概有多少条记录在表中或有多少记录具有索引字段的特定值。我不希望人们能够获得有关未索引字段内容的任何信息。DBD::mysql不应允许多个语句,因此我不希望它可以运行任何查询(仅解释一个查询)。甚至不应该执行子查询,只是解释一下。但我不是mysql专家,

mysql - EXPLAIN 中的 SQL 语法错误

我正在尝试让解释命令在mysql中工作。我正在尝试解决此删除查询的性能问题:DELETEFROMboost_cache_relationshipsWHEREbase_dir='cache/normal/www.dane101.com'ANDpage_callback='node'ANDpage_type='story'ANDpage_id='2891';此查询是SHOWFULLPROCESSLIST命令的输出。我知道EXPLAIN不适用于delete,所以我复制了它并将DELETE替换为SELECT以提供以下内容:explainselectFROMboost_cache_relatio

mysql - 了解 MySQL 中 EXPLAIN 的结果

我有两个独立的查询,它们具有相同的输出。现在我想知道哪个更好?查询1:|id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra||----|-------------|-------|------|---------------|--------|---------|--------|------|----------------------------------------------------||1|SIMPLE|t1|ALL|(null)|(null)|(null)|(null)|9|Usingwh

mysql - 在 MySQL EXPLAIN EXTENDED 上下文中过滤意味着什么?

在MySQLEXPLAINEXTENDED上下文中,filtered是什么意思?MySQLDocs状态:filtered(JSONname:filtered)Thefilteredcolumnindicatesanestimatedpercentageoftablerowsthatwillbefilteredbythetablecondition.Thatis,rowsshowstheestimatednumberofrowsexaminedandrows×filtered/100showsthenumberofrowsthatwillbejoinedwithprevioustable