草庐IT

即使有索引,MySQL 语句也非常慢

以下查询大约需要200秒才能完成。我想要实现的目标是吸引已支付6次或更多次但尚未下任何订单的用户(不同市场有2个订单表)。u.id,ju.id都是主键我已将user_id和order_status合并为两个订单表上的一个索引。如果我删除mp_orders表上的连接和COUNT(),查询需要8秒才能完成,但有了它,它会花费太长时间。我想我已经为所有我可以拥有的东西编制了索引,但我不明白为什么要花这么长时间才能完成。有什么想法吗?SELECTu.id,ju.name,COUNT(p.id)aspayment_count,COUNT(o.id)asorder_count,COUNT(mi.i

慢sql优化思路及使用规范

1、索引优化1.1建表或加索引时,保证表里互相不存在冗余索引。对于MySQL来说,如果表里已经存在key(a,b),则key(a)为冗余索引,需要删除。1.2复合索引建立索引时,多考虑建立复合索引,并把区分度最高的字段放在最前面。比如select*fromgoodswheregoods_no='aaa'andstate=1;这种情况我们只需要建了一个复合索引就可以,这就相当于创建了(goods_no,state)、(goods_no)两个索引,这就是最佳左前缀特性。ALTERTABLE`goods`ADDINDEX`idx_goodsno_state`(`goods_no`,`state`)U

mysql - ORDER BY 让我的查询 super 慢。里面的例子。任何加快速度的想法?

使用ORDERBY运行此命令需要10多秒钟,并最终导致我的网站在高流量时崩溃。select*fromtbluserinfluences,tblcontent,tbluserswheretblcontent.userid=tblusers.idandtbluserinfluences.userid=tblusers.idandtbluserinfluences.lcase_influence='pinkfloyd'orderbytblcontent.scoredesclimit0,160不使用ORDERBY运行相同的查询只需要几毫秒。select*fromtbluserinfluence

SQL IN 子句比单个查询慢

我在MySQL5.0.67中使用Hibernate的JPA实现。MySQL配置为使用InnoDB。在执行JPA查询(转换为SQL)时,我发现使用IN子句比执行单个查询要慢。示例:SELECTpFROMPersonpWHEREp.nameIN('Joe','Jane','Bob','Alice')比四个单独的查询慢:SELECTpFROMPersonpWHEREp.name='Joe'SELECTpFROMPersonpWHEREp.name='Jane'SELECTpFROMPersonpWHEREp.name='Bob'SELECTpFROMPersonpWHEREp.name='A

mysql - 为什么这个 update-with-join mysql 查询这么慢?

我有一个应用程序需要更新层次结构中的节点,从ID已知的特定节点向上。我使用以下MySQL语句来执行此操作:updatenodeasAjoinnodeasBonA.lft=B.rgtsetA.count=A.count+1whereB.id=?该表在id上有一个主键,在lft和rgt上有索引。该语句有效,但我发现它存在性能问题。查看相应select语句的EXPLAIN结果,发现“B”表检查的行数非常多(可能是整张表)。我可以轻松地将查询分成两个单独的查询:selectlft,rgtfromnodewhereid=?LFT=result.lftRGT=result.rgtupdatenod

mysql - 为什么使用 INT 选择包含数字的 Varchar 索引比使用字符串慢得多?

我有一个包含几千行的表,有一个包含数字的Varchar列。尽管当时讨论了为什么此列不是数字类型,但从该表中选择行显示了一种奇怪的行为。虽然该列上有一个索引,但使用数字字符串查找行比使用整数(0.54秒)快得多(0.01秒)。这是什么原因?它似乎无法转换和使用索引的值...我是不是忽略了什么?看起来它不是在转换Int以将其用于索引?我是否必须提供有关索引使用的提示,或者是否有数据库切换来完成此操作?或者,如果我误解了Explain输出,为什么它会慢很多?显示示例的表格布局:CREATETABLE`example`(`id`int(11)NOTNULLAUTO_INCREMENT,`stu

mysql - 与没有索引的选择查询相比,MySQL 中的更新连接非常慢

我有一个包含100k行的MySQL表,它捕获一些创建为以下内容的服务器日志:CREATETABLE`logs`(`id`INTNOTNULLAUTO_INCREMENT,`ip`VARCHAR(16)NULL,`date`DATETIMENULL,`session_time`SMALLINTUNSIGNEDNULL,PRIMARYKEY(`id`));我正在尝试将session时间计算为同一ip的连续行之间的时间差。我能够通过以下花费不到一秒的选择查询来实现这一点:SELECT*FROMlogsASaLEFTJOIN(SELECTid,from_unixtime(@diff)ASsta

与其他环境相比,Mysql 在我的 MacBook 上运行速度非常慢

我想在我的MacBook上加速我的MySQL。它比在我们的服务器或其他笔记本电脑上的虚拟机上运行的MySQL慢得多。我处理的所有表都是InnoDB。我运行了很多Django单元测试,所以运行了很多创建表命令。更新:我应该指出,我实际上是将它与另一台运行FedoraVM的笔记本电脑进行比较,没有对my.cnf进行任何调整,也没有特别快的硬盘驱动器。我也知道我们的服务器运行得相当快,但我可以接受。我的猜测是它仍然可能是硬盘问题。 最佳答案 请记住一件事:您的MacBook配备笔记本电脑硬盘。即使它是7200RPM,您也应该预料到它会更慢

尽管 EXPLAIN 显示了良好的计划,但 MySQL 与连接的慢查询

我有以下场景:在MySQL数据库中,我有2个MyISAM表,一个有420万行,另一个有3.2亿行。以下是表的架构:表1(420万行)F1INTEGERUNSIGNEDNOTNULLPRIMARYKEYf2varchar(40)f3varchar(40)f4varchar(40)f5varchar(40)f6smallint(6)f7smallint(6)f8varchar(40)f9varchar(40)f10smallint(6)f11varchar(10)f12tinyint(4)f13smallint(6)f14text表2(3.2亿行)F1INTEGERUNSIGNEDNOTN

sql - mysql "group by"查询非常慢

我在一个包含大约10万条记录的表中执行此查询,它运行起来非常慢(3-4秒),当我取出组时它会快得多(不到0.5秒)。我不知道该怎么做才能解决这个问题:SELECTmsg.id,msg.thread_id,msg.senderid,msg.recipientid,from_user.usernameASfrom_name,to_user.usernameASto_nameFROMmsgtableASmsgLEFTJOINusertableASfrom_userONmsg.senderid=from_user.idLEFTJOINusertabeASto_userONmsg.recipie