草庐IT

query-optimization

全部标签

mysql_query() 在 php 退出后继续运行

我注意到如果我使用mysql_query()对php执行一个长时间运行的mysql查询(我知道我不应该使用它)然后php进程被终止然后查询继续在mysql上运行服务器。这不是持久连接。连接是通过以下方式建立的:$db=mysql_connect($host,$login,$pass,false);$sql='SELECTCOUNT(*)FROM`huge_table`';$result=mysql_query($sql,$db);例如,假设我有一个10亿行的表,一个php进程出于某种原因这样做:SELECTCOUNT(*)FROM`huge_table`然后它超时(比如因为我正在运行带

mysql - 简单查询优化(WHERE + ORDER + LIMIT)

我的查询运行速度慢得令人难以置信(4分钟):SELECT*FROM`ad`WHERE`ad`.`user_id`=USER_IDORDERBY`ad`.`id`descLIMIT20;广告表大约有1000万行。SELECTCOUNT(*)FROM`ad`WHERE`ad`.`user_id`=USER_ID;返回10k行。表有以下索引:PRIMARYKEY(`id`),KEY`idx_user_id`(`user_id`,`status`,`sorttime`),EXPLAIN给出了这个:id:1select_type:SIMPLEtable:adtype:indexpossible_

mysql - 如何在没有任何连接的情况下优化大型 MySQL 表中的查询?

我如何从一个大型表(约7500万行)优化这个单一查询?SELECTlog_idFROMscoreWHEREclass_idIN(17,395)ORDERBYdate_reverseLIMIT10000;我为一组特定的类提取了最近的10k条记录,以便我可以在更大的导入脚本中快速知道它们是否已经存在。我想我已经正确地建立了索引,但是这个查询持续了5-50秒!如果您还需要什么,请告诉我。EXPLAINSELECTlog_idFROMscoreWHEREclass_idIN(17,395)ORDERBYdate_reverseLIMIT10000;***row1***table:scorety

mySQL 子查询比 2 个单独的查询慢

我正在为一个简单的子查询而烦恼。我有以下查询女巫运行了30多秒:SELECTDISTINCTSUBSTRING(6pp,1,4)ASpostcodeFROM6ppWHEREgemeenteIDIN(SELECTgebiedIDFROMtmp_orderimportWHEREtypeGebied='Gemeente'ANDidorder=1733ANDSTATUS=TRUE);解释:如果我将查询分成2个查询并首先运行IN部分,整个过程不会超过一秒钟。但我当然更喜欢使用一个查询。这些表在MYISAM中。有什么建议吗?更新:以GordonLinoff为榜样。我将SQL更改为:SELECTDI

mysql - 获取 MAX(date) < X 的数据

我有两个具有一对多关系的表。Table1IDnameemailTable2IDtable1_IDdate我需要从Table1where获取所有数据:MAX(date)fromTable2这行不通。Max在where子句中被认为是“无效的”。我所做的是:SELECTTable1.name,Table1.email,tmp.maxdateFROMTable1JOIN(SELECTMAX(date)maxdate,table1_IDFROMTable2GROUPBYtable1_ID)astmpONtmp.table1_ID=table1.idWHEREtmp.maxdate所以这行得通。但

mysql - Google Big Query 中是否有任何方法可以在不重复使用* 右边的任何行的情况下一对一地进行左外连接?

我们在一个表中有一组患者,我们希望将他们中的每个患者与另一表中的患者完全匹配-但我们需要成对的患者,因此我们不能将一个患者与多个其他患者匹配。LeftOuterJoins添加匹配项的每个匹配项-将患者匹配到每个其他可能的匹配项-因此我们需要一些其他方法。我们在SO上看到很多关于匹配第一行的答案-但这使我们只能将一个患者与多个其他患者匹配-而不是我们需要的一对。在GoogleBigQuery的表之间是否有任何可能的方法来创建配对匹配而不重复?(即使它需要多个步骤。)附录:这里是示例表。如果能看到使用它的SQL示例会很棒。这是需要的。ExampleSourceTables:TableAPa

php - SELECT QUERY LIKE 仅包含字符串中的特定单词

我有一张如下表,表名是js_skills_achievementsidskill1skill2skill3skill41javaphphtmlandroid2phpjavajqueryhtml3sqlphphtmljquery当管理员搜索关键字是“nersupalli中的java开发人员”时我的查询在下面SELECT*FROM`js_skills_achievements`WHERE`skill1`LIKE'%javadeveloperinnersupalli%'OR`skill2`LIKE'%javadeveloperinnersupalli%'OR`skill3`LIKE'%jav

mysql - 错误 : Cannot enqueue Query after fatal error. Expressjs。 mysql

我有我的Expressjs连接到多个数据库。每次我启动我的应用程序时都有效。但是,只要我与数据库的连接失效...连接就会返回错误代码PROTOCOL_CONNECTION_LOST。当连接空闲时,这对于mysql来说是正常的。我的mysql服务器部署在AWSRDS中,它也可以正常工作。问题是,每当我的express应用程序遇到PROTOCOL_CONNECTION_LOST错误时,它应该重新连接到数据库,这实际上也可以。BUUT当我尝试查询我的MYSQL数据库时。它返回一个Error:CannotenqueueQueryafterfatalerror.错误。我已经处理这个问题一段时间了

mysql - SELECT COUNT with JOIN optimization for tables with > 100M rows

我有以下问题SELECTSUBSTRING(a0_.created_dateFROM1FOR10)ASsclr_0,COUNT(1)ASsclr_1FROMapplicationsa0_INNERJOINpackage_codesp1_ONa0_.id=p1_.application_idWHEREa0_.created_dateBETWEEN'2019-01-01'AND'2020-01-01'ANDp1_.type='Package1'GROUPBYsclr_0---编辑---你们中的大多数人都关注GROUPBY和SUBSTRING,但这不是问题的根源。以下查询具有相同的执行时间:

mysql - PHPMyAdmin 的 'Query took' 时间与 MySQL Profiling 信息不同

使用新的MySQLQueryProfiler在PHPMyAdmin2.11.5版中,我得到以下结果(PNG-version)StatusTime(initialization)0.00004Openingtables0.000059Systemlock0.000003Tablelock0.000006init0.000013optimizing0.000004statistics0.000015preparing0.000012executing0.000028Sendingdata0.000129end0.000003queryend0.000002freeingitems0.000