是否有一个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脚本的一部分
谢谢您抽时
我有这样的疑问:
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选择请求:
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文档对此并不是很清楚。我想将索引添加到现有表中。该表是一个包含登录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占用了过多的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
以下查询在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
我正尝试在我的数据库中运行以下查询:
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;
+----------+------------+----------------+--------------+
我有超过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.
我正在尝试优化我的查询,但是,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>
我有一个具有以下统计信息的数据库
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
非常奇怪的是:
mysql> explain select *from online where last < now()-interval 30 second and type=1;
+----+-------------+--------+------+---------------------------------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | ke
当我在一个包含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;
+--------+---------------+--
CREATE TABLE test
(
user_id int unsigned not null,
post_id int unsigned not null,
primary key (user_id, post_id),
foreign key test_user_id (user_id) references user (id),
foreign key test_post_id (post_id) references post (id)
);
show index from test;
+-------+------------+--------------
我想使用这个查询创建一个索引:
CREATE INDEX `PRIMARY` ON `elements` (`id`) USING BTREE
或者诸如此类的事情,我尝试过几个问题:
1. CREATE INDEX `PRIMARY` ON `elements` (`id`) USING BTREE
2. CREATE INDEX 'PRIMARY' ON `elements` (`id`) USING BTREE
3. CREATE INDEX `PRIMARY` ON 'elements' (`id`) USING BTREE
4. CREATE
我尝试用这种方式在我的表上创建一个两列索引:
CREATE INDEX prod_hash_index ON components(producer_normalized, hash);
结果不是一个索引,而是两个索引(当我执行SHOW INDEXES FROM components;时):
+------------+------------+-----------------+--------------+---------------------+-----------+-------------+----------+--------+------+------------+-----
由于此设置:
mysql> show global variables like '%indexes';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | ON |
+-------------------------------+-------+
慢查询日志不断收到:
# Time: 120607
我有一个名为t_media_items的mysql表。我有3科尔的索引(parent_id,类型,体重)。索引大小为2.52MB。
mysql> show indexes from t_media_items;
+---------------+------------+--------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | N
我有以下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');
问题是池表包含数百万