小编Mik*_*ell的帖子

CREATE INDEX 与 ALTER TABLE ADD INDEX - MySQLism 还是 SQL 标准?

刚刚遇到一个奇怪的问题,根据我创建索引的方式,需要一个索引名称。

http://dev.mysql.com/doc/refman/5.5/en/create-index.html

http://dev.mysql.com/doc/refman/5.5/en/alter-table.html

CREATE INDEX `random_name` ON `my_table` (`my_column`); # Requires an index name

ALTER TABLE `my_table` ADD INDEX (`my_column`); # Does not require an index name
Run Code Online (Sandbox Code Playgroud)

在我看来, CREATE INDEX 调用不应该要求索引名称。我想知道这是 MySQL 主义还是 SQL 标准?

mysql index sql-standard

31
推荐指数
1
解决办法
7万
查看次数

SELECT INTO OUTFILE 与 INSERT INTO ... SELECT

在我粗略的研究过程中,我无法找到有关SELECT INTO OUTFILE超过INSERT INTO ... SELECT. 在阅读与InnoDB 表上的相关锁相关的文档时INSERT INTO ... SELECT它指出:

在插入到 T 的每一行上设置一个没有间隙锁的排他索引记录。 如果事务隔离级别为 READ COMMITTED 或启用了 innodb_locks_unsafe_for_binlog,并且事务隔离级别不是 SERIALIZABLE,则 InnoDB 将 S 上的搜索作为一致读(不锁)。否则,InnoDB 会在来自 S 的行上设置共享的 next-key 锁。

为了避免锁定INSERT INTO ... SELECT似乎我必须确保隔离级别是READ COMMITTED为了避免在查询过程中锁定源表。

但是,我无法找到任何有关锁和使用的权威答案SELECT INTO OUTFILE,甚至没有找到MySQL文档参考锁信息。

我的目标是避免在查询运行时锁定源表以避免连接堆叠。

mysql innodb locking isolation-level

6
推荐指数
1
解决办法
4596
查看次数

MySQL - SELECT INTO OUTFILE,带有 UNION

是否可以发出多个选择查询,其结果集通过联合合并到同一个输出文件中?

我正在尝试做但不起作用:

(SELECT email FROM table WHERE createdate >= date_sub(now(), interval 1 year))
UNION DISTINCT
(SELECT email FROM table WHERE createdate < date_sub(now(), interval 1 year) AND email not like '%@gmail.com')
INTO OUTFILE '/tmp/emailDump.txt' FIELDS TERMINATED BY "," LINES TERMINATED BY "\n";
Run Code Online (Sandbox Code Playgroud)

mysql union

2
推荐指数
1
解决办法
9544
查看次数

MySQL - INSERT INTO ... SELECT ... UNION

我遇到了一个相当复杂的查询问题,我需要将一个表中的 id(基于重标准)存储到一个狭窄的备用表中以供将来参考,但我一直遇到错误的 sql 构造错误。

如果我自己运行以下查询,它可以正常工作:

(SELECT DISTINCT a.id FROM accounts AS a
WHERE a.createdate >= date_sub(now(), INTERVAL 1 YEAR)
AND a.email NOT LIKE '%gmail.com')
UNION DISTINCT
(SELECT DISTINCT a.id FROM accounts AS a
WHERE a.createdate < date_sub(now(), INTERVAL 1 YEAR)
AND a.email NOT LIKE '%yahoo.com') AND a.email NOT IN
(SELECT email FROM inactive_clients));
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试像这样运行相同的查询:

INSERT INTO my_backup_table (account_id) VALUES ($aboveQuery);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

MySQL server version for the right syntax to use near 'UNION DISTINCT (SELECT DISTINCT a.id FROM accounts at line …
Run Code Online (Sandbox Code Playgroud)

mysql insert union

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

mysql ×4

union ×2

index ×1

innodb ×1

insert ×1

isolation-level ×1

locking ×1

sql-standard ×1