运行本地Mysql实例。在我的数据库中,我拼写错了一个列名(stret to street)。所以我写了一个查询:
alter table address change Stret Street VARCHAR(20);
此表刚创建,并且不包含任何记录。我知道有很多不同的线程在问为什么花了这么长时间,但是他们所有的表都有100,000+行。我一无所有!为什么查询耗时1小时13分15.76秒?
我知道我可以删除并重新创建表,我只是好奇为什么这个“简单”的更改会花这么长时间?
编辑:找出原因。我正在调试一个使用这个数据库的程序,并在中间停止(没有终止程序)以更改列名。一旦我停止了tomcat,一
我将数据从MySQL数据库迁移到PostgreSQL数据库,并错误地将PostgreSQL数据库中的所有列设置为非空。
在此之后,我面临着插入数据的问题,并且必须手动取消选中not null,那么是否有办法对表中的所有列(除了id(主键) )执行此操作。
我也有这个查询单列,但它也很耗时,
ALTER TABLE <table name> ALTER COLUMN <column name> DROP NOT NULL;
问题1:
select distinct email from mybigtable where account_id=345
耗时0.1s
问题2:
Select count(*) as total from mybigtable where account_id=123 and email IN (<include all from above result>)
耗时0.2秒
问题3:
Select count(*) as total from mybigtable where account_id=123 and email IN (select distinct email
我的CloudSQL数据库中有一个8Go表,它(目前)没有主键。它由5200万行组成,每行20列。
我想添加一个,因为我将删除重复项,并且在没有主键的情况下这样做对于MySQL来说太耗时
然而,我在运行时遇到了一些问题,我想知道我是否真的是以最有效的方式来做这件事。
我想使用下面的代码行添加这个主键:
ALTER TABLE mytable ADD COLUMN id INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST
我预计这个请求会使我的数据库大小增加几百MB,并且运行得相当快。
但是,当我运行请求时,我看到数据库使用率增加了很多(+ 14 GB)
我有一个有两百万行的Mysql表。大小为600Mb。
此查询耗时2秒。我不知道如何加快速度。该表已采用Myisam格式。我不知道是否达到了select计数的速度极限。
SELECT COUNT(video) FROM yvideos use index (PRIMARY) WHERE rate>='70' AND tags LIKE '%;car;%'
感谢所有人
我有一个大约有20列的表,我希望复制一条记录。我可以这样做:
INSERT INTO [Table] (ColumnA, ColumnB, ColumnC, .... ColumnZ)
SELECT TOP 1 ColumnA, ColumnB, ColumnC, .... ColumnZ
FROM [Table]
WHERE ID=@ID
但是,这将非常耗时,并且如果将来向表中添加新列,我希望自动复制该列。因此,我正在寻找一些方法来做:
INSERT INTO [Table]
SELECT TOP 1 * (apart from identity)
FROM [Table]
WHERE ID
我为两个表编写了一个连接查询,每个表有4000条记录,以便使用php获取数据。我在mysql中执行查询,耗时32秒。 下面是查询 SELECT Distinct a.*,b.*
FROM OrderCalculation a right join crm_order b on a.orderid = b.orderno
order by b.orderno desc LIMIT 20 OFFSET 0 有人可以改进这个查询并减少执行时间吗? 谢谢
重命名表在MySQL中不起作用
RENAME TABLE group TO member;
错误消息是
#1064 - You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near 'group
RENAME TO member' at line 1
对我来说,这个查询在其他表上工作得很好,但在表group上就不行了。
我试图从数据库中删除除一个表之外的所有表,结果出现以下错误:
无法删除或更新父行:外键约束失败
当然,我可以反复尝试,看看这些键约束是什么,并最终删除所有表,但我想知道是否有一种快速的方法来强制删除所有表(因为我可以重新插入那些我不想删除的表)。
谷歌针对我的一些网站,提出了以下方法:
mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;
简而言之,它并没有真正起到作用,因为当我能够删除更多的表时,我最终收到了同样的错误。我在Stack Over
我试图将ALTER权限授予远程MySQL用户,但当我执行该查询时,它会出现错误:"ALTER命令拒绝给user MySQL for RemoteTest‘“
在ALTER之前,该表是在同一个脚本中用created创建的,这是成功的。
用户“远程”被授予mysql用户表中的alter_priv。
给予的特权是:
mysql> select insert_priv, create_priv, alter_priv from user where user="**********";
+-------------+-------------+------------+
我有一个相当大的表,有6000万个条目。
让我们将我拥有的表称为bigtable,将列称为tracking_code (类型为varchar(8))。
当我使用查询时
SELECT * FROM bigtable WHERE tracking_code LIKE 'SDMASGG_';
执行时间为0.75秒,而查询
SELECT * FROM bigtable WHERE tracking_code LIKE 'SDMA_GGH';
耗时超过9分钟。
我对mysql显示的对'_‘位置的选择性很感兴趣。
我来自Postgres背景,并试图将我的应用程序转换为MySQL。我有一个查询,它在Postgres上非常快,在MySQL上非常慢。在做了一些分析之后,我已经确定造成巨大速度差异的一个原因是嵌套查询。下面的伪查询在Postgres上耗时170ms,在MySQL上耗时5.5秒。
SELECT * FROM (
SELECT id FROM a INNER JOIN b
) AS first LIMIT 10
在MySQL和Postgres上,以下查询的速度相同(小于10ms)
SELECT id FROM a INNER JOIN b LIMIT 10
我在两个数据库上有完全相同的表、索引和