我刚刚发现使用InnoDB引擎的MySQL的以下行为。有没有办法解释执行时间上的显著差异?
第一个查询:
SELECT ask FROM history_time WHERE ask> 1.5790 AND timestamp BETWEEN 1207000800290 AND 1207690900290
执行时间:0.715秒
EXPLAIN: '1', 'SIMPLE', 'history_time', 'range', 'PRIMARY,timestamp,ask,ask_2
在我的站点上,我经历了相当高的服务器负载时间,我正在考虑优化一些mysql查询的方法。
我现在做的是:
首先,我数表中所有的汽车,有一定的criteria;If,数大于20,用这些查询数较小的,我做一个更一般的搜索,只是为了给出页面上的一些结果。<code>G 215</code>
有更快的方法吗?
似乎我正在放松性能,使用特定的标准**计数行,并再次查询它们以获取数据。
$car_sql = mysql_query("SELECT COUNT(*) FROM ".$table." WHERE carid IS NOT NULL $criteri
我使用的是MySql 5.5.46,并且有一个包含位列的InnoDB表(名为“ENABLED”)。此列没有索引。该表有2600万行,所以可以理解的是,语句
DELETE FROM my_table WHERE ENABLED = 0;
需要很长时间。我的问题是,有什么我可以做的(不升级MySQL,这目前不是一个选项),以加快运行这个查询所需的时间?我的“innodb_buffer_pool_size”变量设置如下:
show variables like 'innodb_buffer_pool_size';
+-------------------------+--------
在过去的3天里,我一直在执行长时间的SQL查询,没有任何问题,包括今天早上我运行超过1200秒的查询。
但现在我得到了:
> ERROR 2013 (HY000) at line 1: Lost connection to MySQL server during query
执行示例如下:
marcelo@node:~$ sudo /sbin/sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5
net.ipv4.tcp_keepa
我将首先解释我的目标:我希望用户查询数据库,并且仅当这些行自上次查询以来已更新时才返回这些行。没有必要返回他们已经拥有的数据。因此,我创建了一个名为'lastupdated‘的列,这是一种timestamp类型,每当行中的任何内容更新时,它都会自动更新。这可以很好地工作。现在,我想要正确地形成查询。用户将保存上一次查询的时间戳,并通过php将其用于将其上一次查询的时间与每行的更新时间进行比较。如果该行是在上次查询后更新的,则应返回该行。
我做了这样的东西,
SELECT * FROM users WHERE '2011-02-26 01:50:30' <= las
我有一个group-by查询,当涉及到索引,连接,发送结果等时,它非常快。不幸的是,当我分析它时,mysql花了99.6%的时间“复制到临时表”。我不知道如何才能让mysql自己表现得更好。
group by查询实质上是查找系统中前20个标记的实体数量。我在这个查询的基础上过滤掉用户选择的标签,实质上缩小了字段的范围。当他们选择一个新标签时,查询性能会显著提高。如果他们选择2个或3个标签,查询会非常快地找到具有这2个或3个标签的实体数量,再加上紧随其后的最受欢迎的标签。
本质上,性能问题是当没有选择标签时,或者选择了1个标签时。解决这个问题的最佳方法是什么?
1)内存缓存,比如ehcache?
我正在phpmyadmin中运行与时间戳相关的mysql查询。有一个表的名称是“regDate”和“时间戳”作为数据类型。此外,我使用我的php前端在其中插入了UTC时间。但是,当我在IST中运行查询以显示时间时,它会在其中添加服务器时间。查询是
SET time_zone ='+05:30';
SELECT regDate FROM registered WHERE email='xyz@gmail.com';
表单元格中的实际时间戳为“2016-02-26 04:38:00”。我的服务器时区是'-07:00‘,当我在phpmyadmin中运行上面的查
我有一个MySQL InnoDB表events,它有3行:
event_id ---> int
start ---> long
end ---> long
我编写了一个简单的查询,用于获取与另一个事件冲突的某个范围内的所有事件:
select a.* from events a, events b
where a.event_id != b.event_id and
a.start < b.end and
b.start < a.end
该表有10K行,执行时间为2秒。在尝试调整表以提高性能时,我在start和e
嗨,我有个小问题,你能帮我个忙吗?
SELECT `name` , `mytimestamp`
FROM `profile`
WHERE `mytimestamp` between '2012-10-24 05:59:00' AND '2012-10-25 05:59:00'
ORDER BY `name` , `mytimestamp`
上面的查询从我的表中列出了大约3000条记录,在我的表中有100个名字,对于这些名字,几个时间戳是有效的,现在我的问题是我必须找到一个有3小时间隔的名字?
我需要在mysql中从查询本身执行此操作......
感
我需要一个简单的查询mysql查询优化。
SELECT * FROM consumer WHERE FIRSTNAME = 'JAMES' and LASTNAME='ADAMS' and City = '*' and State = '*';
该表有50,000,000条记录。执行时间为8分钟。你能帮我缩短时间吗?
使用AWS Athena (所以使用MySql查询),我试图检索同一IP被记录了多少次的信息。我有列:时间戳,IP,国家。我想计算每个IP的唯一出现次数。 我正在尝试这个查询,但结果是错误的: SELECT timestamp as Timestamp,
count(httprequest.clientIp) as Count,
httprequest.country as Country
FROM table_name
GROUP BY timestamp, httprequest.country 谢谢你帮我实现了这个柜台查询。 编辑: 示例数据: {
我有80000多个客户和4组。现在,我想在mysql中找到两个具有查询的组用户。我的查询如下:
select c.customers_firstname as recipient_firstname,
c.customers_lastname as recipient_lastname,
c.customers_id as recipient_id,
c.customers_email_address as recipient_email_address
from customers c
where customers_group_id = &
我在MySQL很新,所以请容忍我.
我有一个excel表,它查询MySQL database...here是查询的一部分(从VBA宏运行):
...
sql_query = "SELECT SQL_CACHE g.Id, g.Client, g.text_parsing FROM `global`.`tbl_cots` AS g WHERE g.Client LIKE '" & strClient & "%' GROUP BY g.Id;"
With rsPubs
.ActiveConnection =
目前我使用下面的php代码块选择最新的行,我有一个ajax循环,它每隔几秒钟运行一次这个php代码块来返回提要。当最新的时间戳没有改变时,我想向ajax回显false,这样ajax就不会复制结果,并用相同的内容填充我的Div (#feed)。
<?php
require_once 'db_conx.php';
$Result = mysql_query("SELECT * FROM profiles ORDER BY lastupdated desc limit 1") or die (mysql_error());
while($row = mys
我试图查询一个MySQL数据库,其中名为CrashReceived的时间戳列来自两个月前,但不包括1个月前的记录。
这个想法是我有一个计数比较,这样我就可以得到上个月的记录计数,然后将计数与前一个月进行比较。
因此,我正在测试一个查询,以检索列值是2个月前的所有记录,但不包括1个月前的记录。
下面是我到目前为止的查询:
SELECT * FROM crash_info WHERE ProjectID='14720069' AND (NOW() - INTERVAL 2 MONTH < CrashReceived AND (CrashReceived <> NO
我有一个非常简单的程序,在其中我创建了一个Sequelize实例,然后对mysql数据库执行一个原始查询。情况是,当MySql启动并且运行时没有问题,我可以在没有问题的情况下执行查询。但是,当MySql没有运行时,在达到查询超时之前,查询不会发送任何错误,然后发送一个ETIMEOUT错误。但事实并不是这样。如果mysql没有运行,我希望查询会发出ENOTFOUND错误或类似的内容,以便在Mysql关闭或Mysql非常繁忙且响应时间非常长的情况下,我可以管理错误并执行不同的操作。我应该做些什么来检查Mysql是否已经启动并运行,而不必等待超时异常。
sequelize = new Sequeli
我在运行MySQL查询-
SELECT
u.userid, u.lastopen,
r.auto_renew_status, r.product_id, r.is_trial_period,
(SELECT count(apd.id) FROM apple_purchase_details as apd
WHERE apd.id = u.userid
GROUP BY u.userid
HAVING count(apd.id) < 5
) as total
FROM users as u, receipt as r
WHERE u.userid = r.id
日安,
我们的数据库遇到了内部DBA无法解释的持续问题。
使用以下查询示例:
Select Distinct
Date,
AccountNumber,
Region,
Discount,
ActiveBalance
Into
#sometemptable
From
anothertable With (Index(ondate)) --use this or the query takes much longer
Where
Date >='7/1/2013'
And ActiveBalance > 0
我试图表明,当从具有适当索引的表中进行选择时,行数对查询延迟几乎没有影响。所以我创建了一个表:
CREATE TABLE `perf_test` (
`first` int NOT NULL,
`second` int NOT NULL,
`third` int NOT NULL,
`fourth` int NOT NULL,
`fifth` int NOT NULL,
KEY `yyy` (`first`)
)
我运行了两个测试:一个是表有1M行,其中100行与查询匹配;另一个是表有10M行,其中100行与查询匹配。我发布了10次查询SELECT * FROM pe