我正在尝试优化一个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
是否有一个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中有下表(T):
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| first | varchar(50) | NO | PRI | NULL | |
| second | varchar(50) | NO | PRI | NULL | |
| thir
我有超过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
你好,因为我从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文档对此并不是很清楚。我想将索引添加到现有表中。该表是一个包含登录id和密码的用户表,我想为此创建一个索引以优化登录。
这就是我想要尝试的方式:
mysql> ALTER TABLE `users` ADD INDEX(`name`,`password`);
这样就创建了:
mysql> show index from karmerd.users;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+-----
我想知道为什么mysql在下面的表(Visit_url)查询中没有使用索引:
> describe select sv.url from visit_url sv, result_query rq where rq.result_id = sv.result_id and rq.user_id = 'fred';
+----+-------------+-------+--------+---------------+---------+---------+------------------------+--------+-------------+
| id | se
我刚刚学习了如何在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
我在这迷路了。我们有一个大约需要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数据库与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没有使用任何索引。
这是我的疑问:
explain
SELECT t1.*
FROM crypto_screener.prices as t1 FORCE INDEX (PRIMARY)
where t1.id = (
select t2.id
from (select *
from
crypto_screener.prices FORCE INDEX (allfilters)
where date > '
我正试图解决服务器上的一个高负载问题,今天,由于某种原因,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' ,
在运行以下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
最近我正在检查我的系统日志,我注意到我的一些查询非常慢。
我有一张存储用户活动的表。表结构为id (int), user (int), type (int), object (varchar), extra (mediumtext) and date (timestamp)。
而且,我只有id (BTREE, unique)的索引。
我有以下查询的性能问题;
SELECT DISTINCT object as usrobj
from ".MV15_PREFIX."useractivities
WHERE user='".$user_id.&
我正尝试在我的数据库中运行以下查询:
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
我收到这样的警告:
在mTable查询/准备语句SELECT *中没有使用索引,其中my_column为NULL
但是my_column已经被索引了。
MariaDB [mytest]> SHOW INDEX FROM mTable;
+--------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique
我正在尝试优化我的查询,但是,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,
我正在尝试创建一个或多个额外的索引来加快下面的查询速度。所有的键都是主键(除了表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>
我正在尝试让这个查询使用我创建的索引,但是它仍然在做一个完整的表扫描。我甚至尝试创建一个多字段索引,但没有创建运气。我试过力指数,但也没有运气。
Place表有150万条记录。查询的目的是让它在街道上按正确的顺序排序。
SELECT PlacesId
FROM Places FORCE INDEX (Streetname, StreetType, PreDirection,
PostDirection, HouseNumber, UnitNumber)
WHERE Type='Physical'
ORDER BY StreetName, StreetType, Pre
我有一个使用group by和order by的查询,但它非常慢!我需要一些帮助来使索引正确。这是我正在运行的查询:
select *
from puresen_mv_shop.cache_deals
where feature_ids REGEXP 'i,t,d'
and phone_cost > 100.00
group by handset_numeric_id
order by popularity
LIMIT 0,10;
解释:
1 SIMPLE cache_deals index popularity 5 10 663
我完成了从MySQL 5.1主从系统到MariaDB 10.4 Galera集群的迁移。所有的数据库,其中复制,因为他们是在InnoDB上的每个文件,他们工作良好。然而,一些复杂的查询在新系统上非常缓慢,因为它们完全无用,我有点失去了.我通过强制索引来修正其中的一些,但我不知道如何修复其他像这样的.
这是一个查询:
SELECT * FROM (
SELECT * FROM abvalue WHERE deviceid='XXX'
) AS abvalue LEFT JOIN (
SELECT * FROM abperson WHERE deviceid=
我有一个具有以下统计信息的数据库
Tables Data Index Total
11 579,6 MB 0,9 GB 1,5 GB
因此,正如你所看到的,指数接近2倍大。有一个表,它有700万行,至少占了其中的99%。
我还有两个非常相似的索引
a) UNIQUE KEY `idx_customer_invoice` (`customer_id`,`invoice_no`),
b) KEY `idx_customer_invoice_order` (`customer_id`,`invoice_no`,`order_no`)
更新:下面是最大表的表定义(至少在结构
如果将表定义为对列具有唯一约束,那么如果我们希望对该列进行索引以进行快速查找,是否还需要在该列上定义单独的索引?
例如,给定以下表索引:
mysql> show index from FRONTIER;
+----------+------------+-------------------------+--------------+--------------+-----------+-------------+----------+--------+------+-------------+---------+
| Table | Non_unique | Key_name
我需要你的帮助。我有这样的疑问:
SELECT * FROM cart WHERE
(ts_in between 1249077600 AND 1318975199);
上面的查询在ts_in列(范围类型)上使用btree索引。现在,我想为此添加另一个标准。例如:
SELECT * FROM cart WHERE
(ts_in between 1249077600 AND 1318975199) and is_removed=0;
上面的查询没有在ts_in列n(范围)上使用btree索引。
有没有人能告诉我为什么以及怎样才能以正确的方式达到非常快的计算速度。
我创建了两个用于测试的索引:
C