我正在使用MySQL中的一个表,该表使用“邻接列表”方法定义树层次结构,就我的目的而言,该方法应该很好。
我需要使用(fast)查询计算所有子程序上某些值的最大值。
SELECT MAX(N.someValue) AS rate
FROM `nodes` N
WHERE N.parent = <some node id>;
有时我不那么幸运,不得不和孩子的后代一起工作(它定义了,并且总是引用那棵树的分支中的某个叶节点)。
SELECT MAX(N.someValue) AS rate
FROM `nodes` N
WHERE N.id IN (SELECT N2.descendan
操作系统为ubuntu 16.04
MySQL版本:MySQL Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
在我的系统中
/etc/mysql/ -> ls
conf.d debian.cnf debian-启动my.cnf my.cnf.fallback mysql.cnf mysql.conf.d
在该文件中,我需要配置以获取通用查询日志和慢查询日志。
我有一个简单的查询-它只查看一个表,并有两个用于索引的列可供选择,一个ErrorTypeId (指向大约20个唯一值的查找表)和DateOccurred (一个可以包含任何日期的datetime列)。
在大多数情况下,这是可以的,但在某些情况下,查询会超时。查看一下,选择的索引(ErrorTypeId)在其计划中的行数比其他索引(DateOccurred)少得多,但是由于某些原因,运行所需的时间比我手动强制它使用另一个索引要长得多。
/* This execution plan has fewer rows than the second one - and as a result this
我看到有一个很好的选项,如何启用日志慢查询和没有索引的查询:
SET GLOBAL log_queries_not_using_indexes=1;
SET GLOBAL log_slow_queries=1;
好的,好的,但是它们似乎都写入了我在my.cnf配置文件中指定的同一个日志文件:
[mysqld]
long_query_time = 1
log-slow-queries = /var/log/mysql/mysql-slow.log
我使用mysqldumpslow查看最慢的查询,但是我需要做什么才能单独查看那些没有索引的查询呢?
我试图让我们的mySQL数据库运行得更快,我分析了我们的慢查询日志,最常见的慢查询是这样的:
CREATE TABLE IF NOT EXISTS `wp_bad_behavior` (
`id` INT(11) NOT NULL auto_increment,
`ip` TEXT NOT NULL,
`date` DATETIME NOT NULL default '0000-00-00 00:00:00',
`request_method` TEXT NOT NULL,
`request_uri` TEXT NOT NULL,
我正在将我的.NET/MSSQL迁移到RoR/MySQL/EC2/Ubuntu平台。在我将所有现有数据转移到MySQL中后,我发现MySQL查询速度非常慢,即使是像查询select count(*) from countries这样的超基本查询,它也只是一个国家/地区表,只包含大约200条记录,但查询需要0.124ms。这显然是不正常的。
我是MySQL的新手,谁能告诉我可能的问题是什么?或者安装MySQL后我应该打开的任何初始优化按钮?
我想知道,理论中的哪个代码需要更长的时间:
1.
$query = "SELECT Something1, Something2 FROM base WHERE SomeCondition";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
//We do something with $row[0] and row[1]
}
2.
$query = "SELECT Something1 FROM base WHERE SomeCondition&
我在MySQL中有两个相关的表。我想查找表A中没有对应行表B的行。手册和其他线程建议这样做:
SELECT a.id
FROM a LEFT JOIN b ON a.id = b.a_id
WHERE b.id IS NULL;
然而,这是非常慢的。在我的示例中,表A的行数不到5,000行,而表B的行数约为40000行,但此查询最多需要8分钟。
有没有人知道如何更快地实现这一点?
非常感谢你,马特
编辑:索引是问题所在。创建一个查询后,查询将在10微秒内运行。