你好,因为我从MySQL5.5更新到Percona5.7
此查询:
SELECT COUNT(a.alarm_id) AS `count`, MAX(a.alarm_id) AS `max_alarm_id`, `a`.`priority`
FROM `alarm` AS `a`
WHERE (a.maintenance_suppress = '0')
AND (a.deleted_at = '0000-00-00 00:00:00')
AND (a.object_id = '6')
GROUP
mysql> explain SELECT *
-> FROM (`items`)
-> WHERE `states` = 'A'
-> ORDER BY `updated_date` desc
-> LIMIT 20520, 40;
+----+-------------+--------+--------+----------------------------+---------------------+---------+----------+-------+-------------+
| id | sel
是否有一个MySQL命令可以删除除单个表中的第一个索引之外的所有额外索引,从而只保留主索引?
我可以使用下面的命令删除第二个Post_Date索引,但是我在删除所有其他索引时遇到了问题。
mysql_query("ALTER TABLE $TableName DROP INDEX Post_Date");
额外的Post_Date和Post_Date_x索引是在脚本的开头创建的,因此我希望在脚本末尾使用MySQL命令删除它们。
请记住,_x in Post_Date_x并可从1到10,或从1到100。所以可能需要循环或IF语句。
MySQL命令将是PHP脚本的一部分
谢谢您抽时
我正试图解决服务器上的一个高负载问题,今天,由于某种原因,MySQL占用了过多的CPU时间。我已经启用了慢速查询,并发现这个查询和其他类似的查询。
这些表大约有70万行。
SELECT SUM( likes ) AS likes, image_id FROM post_files_likes WHERE image_id NOT IN(563593,591800,578109,581180,515832,646310,670601,626185,689090,80019,399472,468198) AND date > DATE_SUB( '2013-08-19' ,
我正在尝试创建一个或多个额外的索引来加快下面的查询速度。所有的键都是主键(除了表A上的id ),所以它们已经有一个默认的btree索引与之关联。表A上的id也已经有一个与之关联的索引,因为它是一个MUL键,这意味着它是非惟一索引的一部分。
Select A.id
From TableA A
Inner join TableB B
On A.address = B.address
And A.code = B.code
Group by A.id
Having count(distinct B.user) = 1;
以下是上述表格的当前索引:
mysql>
我使用以下查询从mediumblob列中提取频繁的短值:
select bytes, count(*) as n
from pr_value
where bytes is not null && length(bytes)<11 and variable_id=5783
group by bytes order by n desc limit 10;
我的问题是这个查询花费了太多的时间(大约10秒,少于100万条记录):
mysql> select bytes, count(*) as n from pr_value where bytes is not null
我有以下MySQL查询:
SELECT pool.username
FROM pool
LEFT JOIN sent ON pool.username = sent.username
AND sent.campid = 'YA1LGfh9'
WHERE sent.username IS NULL
AND pool.gender = 'f'
AND (`location` = 'united states' OR `location` = 'us' OR `location` = 'usa');
问题是池表包含数百万
我有两个MySQL表,分别名为stockin和stockout。现在,我想检查两个表中名为serialno的唯一列,以查找库存手头行。我已经尝试了4个select查询行来在两个表之间随机查找。但是,每个查询都需要花费太多的时间来执行。你能检查表的索引中是否有错误的问题吗?如果您有任何更正或建议,我将不胜感激。
mysql> SHOW INDEX FROM stockin\G
*************************** 1. row ***************************
Table: stockin
Non_unique: 0
如果将表定义为对列具有唯一约束,那么如果我们希望对该列进行索引以进行快速查找,是否还需要在该列上定义单独的索引?
例如,给定以下表索引:
mysql> show index from FRONTIER;
+----------+------------+-------------------------+--------------+--------------+-----------+-------------+----------+--------+------+-------------+---------+
| Table | Non_unique | Key_name
我有超过6000个结果,使用分页大约超过235页。当我点击第一页时,它加载的速度非常快,大约300ms,直到第40页。在那之后,页面加载时间就会下降,大约需要30 ~ 40+秒。我使用的是索引数据库。我试着用mysql捕获查询,但不喜欢它。谁能帮帮我。
php:
$sql = mysql_query("SELECT * FROM data WHERE (car = '$cars') AND (color = '$color' AND price BETWEEN '".$min."' AND '".$max.
我有这样的疑问:
SELECT DISTINCT
component_tbl.meta,
component_tbl.enabled,
component_tbl.id,
component_tbl.name,
component_tbl.parent,
component_tbl.option,
component_tbl.ordering,
component_tbl.iscore
FROM
components AS `component_tbl`
LEFT JOIN
nodes AS `assignment` ON assignment.comp
我正在尝试优化一个MySQL选择请求:
SELECT * FROM `sales`
WHERE ((sales.private = false AND (sales.buyer_id IS NULL OR NOT sales.buyer_id=142)
AND (sales.merchand_id IS NULL OR NOT sales.merchand_id=142)
AND (sales.private_item = false) )
AND ((sales.buyer_id=32 OR sales.merchand_id=32)
AND (sales.admin=0
SELECT au.*
FROM users au
INNER JOIN friends fa ON au.id = fa.to_user_id
WHERE fa.from_user_id = 369 AND fa.persona_id IN('1241')
GROUP BY au.id
ORDER BY id DESC
LIMIT 0, 9999999999;
下面是解释
mysql> EXPLAIN SELECT au.* FROM users au INNER JOIN friends fa ON au.id = fa.to_user_id WH
我有这个查询,它需要很长时间(大约10分钟)才能完成。
SELECT COUNT(DISTINCT(column)) var,
column2 var2
FROM table
WHERE column<>'X' and
column2 between 'Y' and 'Z'
GROUP BY var2
ORDER BY var DESC
有什么想法来优化速度吗?我试过索引,但仍然很慢。也许它们的设置不正确。Y和Z是时间戳(如果重要的话),而X是这个查询根本不需要的东西,但在表中是因为它是来自同一个
MySQL文档对此并不是很清楚。我想将索引添加到现有表中。该表是一个包含登录id和密码的用户表,我想为此创建一个索引以优化登录。
这就是我想要尝试的方式:
mysql> ALTER TABLE `users` ADD INDEX(`name`,`password`);
这样就创建了:
mysql> show index from karmerd.users;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+-----
我刚刚学习了如何在mysql中创建索引,并在mysql工作台上执行这样的查询,连接到MySQL8.0实例:
use test;
create table idx (
id int not null unique,
name char(5),
primary key(id),
key(name)
);
show index from idx;
结果网格是:
# Table, Non_unique, Key_name, Seq_in_index, Column_name, Collation, Cardinality, Sub_part, Packed, Null, Index_type, Com
我有一个mysql数据库与myisam引擎。与许多其他表一起,我有这个表"et“,它有大约8137037条记录。
我已经创建了索引(列hname和pnum的单独索引,后来创建hname和pnum的联合索引并没有什么帮助,它有助于在一秒钟内执行),这样的查询如下
select st from et where hname='name' and pnum='1' limit 1
执行速度很快(在一秒钟内),但问题是我必须执行这个查询
select st from et where hname='name' and pnum='1
最近我遇到了一些mysql性能问题,下面是查询:
select
assoc.id as id,
parentNode.id as parentNodeId,
parentNode.version as parentNodeVersion,
parentStore.protocol as parentNodeProtocol,
parentStore.identifier as parentNodeIdenti
在运行以下SQL语句之后,您将看到,在运行了MySQL first ALTER TABLE语句之后,已经在tag_id列上自动创建了非唯一索引ALTER TABLE。
但是在第二个 ALTER TABLE语句运行之后,我认为MySQL还应该为我在question_id列上自动创建另一个非唯一的索引question_tag_question_id_question_id。
但是,从SHOW INDEXES语句输出中可以看到,它并不存在。
为什么MySQL会忘记第二次 ALTER TABLE语句?
顺便说一句,由于我已经创建了一个唯一的索引question_id_tag_id_idx,使用了 qu
我在mysql数据库中有一张表。我的查询看上去像是
SELECT device_id,date,timestamp,power,floor
from tableData
where date=%s
and floor=%s
order by timestamp desc
limit 1
为了更快的结果,我在我的表上创建了索引。我的索引:
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+-----
当我在一个包含2200万行的表上运行以下查询时,它需要20秒才能运行:
select p.*,
(select avg(close)
from endOfDayData p2
where p2.symbol = p.symbol and
p2.date between p.date - interval 6 day and p.date
) as MvgAvg_X
from endOfDayData p
where p.symbol = 'AAPL'
表结构如下:
mysql> desc endOfDayData;
+--------+---------------+--
我正尝试在我的数据库中运行以下查询:
SELECT * FROM ts_cards WHERE ( cardstatus= 2 OR cardstatus= 3 ) AND ( cardtype= 1 OR cardtype= 2 ) ORDER BY cardserial DESC LIMIT 10;
所有三个字段(cardstatus、cardtype和cardserial)都被编入索引:
mysql> SHOW INDEX FROM ts_cards;
+----------+------------+----------------+--------------+
以下查询在MySQL 5.0.67中执行0.3秒,在MySQL 5.1.56中执行3.0秒。为什么在更高的版本中会慢十倍?
(数据库是从5.0.67导出的,并导入到5.1.56中,因此结构相同。)
SET @num :=0, @current_shop_id := NULL, @current_product_id := NULL;
#this query limits the results of the query within it by row number (so that only 10 products get displayed per store)
SELECT * FR
由于此设置:
mysql> show global variables like '%indexes';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | ON |
+-------------------------------+-------+
慢查询日志不断收到:
# Time: 120607
我正在尝试优化我的查询,但是,MySQL似乎在查询上使用了非优化索引,并且我似乎找不出哪里出了问题。我的疑问如下:
SELECT SQL_CALC_FOUND_ROWS deal_ID AS ID,dealTitle AS dealSaving,
storeName AS title,deal_URL AS dealURL,dealDisclaimer,
dealType, providerName,providerLogo AS providerIMG,createDate,
latitude AS lat,longitude AS lng,
我在这迷路了。我们有一个大约需要50多岁才能完成的查询,我认为它太慢了。这是查询。我们使用运行在db.r3.large和MySQL版本MySQL 5.7.17上的Amazon中的MySQL
SELECT bucket_label AS bid,
Count(user_id) AS c,
Count(DISTINCT user_id) AS cu
FROM event_impression
WHERE context = 'PROD'
AND experiment_id = Unhe
我有以下简单的MySQL查询:
SELECT SQL_NO_CACHE mainID
FROM tableName
WHERE otherID3=19
AND dateStartCol >= '2012-08-01'
AND dateStartCol <= '2012-08-31';
当我运行它时,它需要0.29秒才能返回36074个结果。当我增加我的date period以返回更多的结果(65703)时,它运行在0.56.当我在同一台服务器上对不同的表(有些表更大)运行其他类似的SQL查询时,结果大约在0.01秒内返回。
虽然0.29并不慢-但