草庐IT

query-optimization

全部标签

Mysql 查询优化、EXPLAIN 和执行缓慢

一些查询存在一些实际问题,尤其是这个问题。信息如下。tgmp_games,大约20k行CREATETABLEIFNOTEXISTS`tgmp_games`(`g_id`int(8)NOTNULLAUTO_INCREMENT,`site_id`int(6)NOTNULL,`g_name`varchar(255)NOTNULL,`g_link`varchar(255)NOTNULL,`g_url`varchar(255)NOTNULL,`g_platforms`varchar(128)NOTNULL,`g_added`datetimeNOTNULL,`g_cover`varchar(255

php - mysqli multi_query 后跟查询

这个问题在这里已经有了答案:"Commandsoutofsync;youcan'trunthiscommandnow"-Causedbymysqli::multi_query(3个答案)关闭5个月前。我目前正在做以下事情:$mysqli=newmysqli($server,$username,$password,$database);$mysqli->multi_query($multiUpdates);while($mysqli->next_result()){;}//Flushingresultsofmulti_queries$mysqli->query($sqlInserts);

mysql - 如何优化对数据透视表的条件检查?

在recentquestion中,StevieG向我展示了如何使用数据透视表解决我的问题。新问题是我必须检查透视表的某些条件。让我们进行最后的查询:SELECTc.id,GROUP_CONCAT(if(d.name='p1',d.value,NULL))AS'p1',GROUP_CONCAT(if(d.name='p2',d.value,NULL))AS'p2',GROUP_CONCAT(if(d.name='p3',d.value,NULL))AS'p3',GROUP_CONCAT(if(d.name='p4',d.value,NULL))AS'p4',GROUP_CONCAT(if

mysql - 为什么在 MySQL 中每个列只在一个索引中并且查询中列的顺序很重要?

我经常在表posts中搜索user+status和user+时间。SELECT*FROM`posts`WHERE`user`='xxx'and`status`='active'SELECT*FROM`posts`WHERE`user`='xxx'and`time`>...因此我设置了两个索引(user,status)和(user,time)我知道,需要更新的索引越多,写入过程就越慢。但我认为在这种情况下,同时拥有两个索引很有用,因为读取操作的数量远远超过写入操作。无论如何,PHPMyAdmin都会给出一个警告,指出“已为列用户创建了多个索引”。我可以忽略这个警告吗?我检查了Wordpr

php - 使用 Mysqli : Is there a way to not have to connect to the database every single query?

我刚刚开始使用MYSQLi而不是MYSQL,我遇到了一个巨大的烦恼:每次查询等都必须连接到数据库。为什么我现在必须在旧的MYSQL中不这样做?或者有没有办法不必这样做?几个例子:MySQL:mysql_query("SELECTidFROMtable");现在在Mysqli中我总是要做:mysqli_query($db,"SELECTidFROMtable");我还必须这样做:mysqli_last_id($db);和mysqli_real_escape_string($db);我整晚都在试图找到这个问题的答案,但我找不到任何东西。 最佳答案

mysql select query from multiple tables 返回重复结果

如果这个问题有点含糊,请告诉我,我会提供更多信息。我编写了一个从多个表中获取数据的查询,但它也没有按照我的预期工作,我完全被难住了。这是我的代码:SELECTstudents.student_fname,students.student_lnameFROMstudents,enrolmentsWHEREenrolments.courseID='C001';但这只会返回学生表中所有学生的名字和姓氏,并且这些名字会显示两次。这是两个表的代码:CREATETABLEstudents(studentIDCHAR(10)NOTNULL,student_fnameVARCHAR(15)NOTNUL

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 - 我应该使用 SQL 还是 Ruby 处理大量数据?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我有一个MySQL表,其中包含数十万个条目。我需要指定一个日期范围并选择这两个日期之间的所有条目。然后我需要按小时分割条目并获取特定字段。用例:我需要从6月6日到6月12日的条目按小时分割。因此,在6月6日,我需要从凌晨12点到凌晨1点、凌晨1点到凌晨2点、凌晨2点到凌晨3点等一系列条目。哪个更快?(以及为什么!):对SELECTdevice_idFROM

php - 跳过/绕过 A mysql_query 上的数据

我正在处理一些图表,我需要了解如何让我的查询在选择时跳过x条记录。比方说,我的MySQL数据库中有100条记录。我想选择,但是buypass9,或跳过9(无论我们应该怎么调用它)..所以我选择:id1id10id19等等等等..我怎样才能在查询中这样做?我试图在for循环中获取值通过用$offset递增$i(我想绕过多少)然后使用$data[$i]['value'];但无法让它发挥作用。 最佳答案 尝试类似的东西Select*fromfoowhereid%9=1 关于php-跳过/绕过A

mysql - JOIN 与 WHERE : Why do two queries that obtain identical results exhibit 3-4 orders of magnitude performance difference?

今晚早些时候,我问了thisquestiononStackOverflow关于如何编写SQL查询以通过仅返回在一个字段中具有重复项的行来过滤表中的行。这里是问题,为方便起见重复:如果我有这些数据:code1code2110...我想编写一个单个SQL查询,其结果如下:code1code2110(即,返回code1列中的任何数据多次出现的所有行的单个SQL查询)...我该怎么做?我receivedananswer有两个可能的SQL查询,它们都能完美地工作。成功的SQL#1:SELECTcode1,code2FROMmyTableWHEREcode1IN(SELECTcode1FROMmy