小编Ara*_*avi的帖子

CREATE TABLE ... AS SELECT 中的自动增量主键

我通过一个复杂的选择查询创建了表CREATE TABLE ... AS SELECT...。如何在此查询中添加自动增量主键?

例如:

create table `user_mv` select `user`.`firstname` as 
   `firstname`,
   `user`.`lastname` as `lastname`,
   `user`.`lang` as `lang`,
   `user`.`name` as `user_name`,
   `group`.`name` as `group_name`
from `user`
  inner join `user_groups` on (`user`.`user_id`=`user_groups`.`user_id`)
  left  join `group` on (`group`.`group_id`=`user_groups`.`group_id`)
where `user`.`lang`=`group`.`lang` 
Run Code Online (Sandbox Code Playgroud)

此查询创建一个包含firstname, lastname, lang, username,group_name列的表。我希望它也有一个id作为自动增量主键的列。

有没有办法通过更改此查询来做到这一点?我知道我可以通过在执行此查询后更改表来做到这一点,但是如果有任何方法可以直接在create table语句中执行此操作,我想知道如何执行此操作。

mysql primary-key auto-increment select ctas

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

在 MySQL 中的许多表中进行全文搜索

我们有高流量的新闻网站,我想添加一个功能,每个用户都可以搜索网站的所有内容,例如newspollscommentsgalleries,等。每种内容类型都有自己的表。

我决定创建一个包含所有类型的所有内容的表:

CREATE TABLE full_text_search
(
    master_id INT NOT NULL,
    content_text TEXT NOT NULL,
    PRIMARY KEY ( master_id )
);
Run Code Online (Sandbox Code Playgroud)

master_id为所有类型的每个内容生成一个唯一编号以识别每个content_textfull_text_search表中。

例如:

News table:
+----+-------------+---------+---------+----------+------------+
| id | news_title  | lead    | subtitle|  content | master_id  |
+----+-------------+---------+---------+----------+------------+
|  1 |  sometitle  |some lead| subtitle|content 1 |     3      |
|  2 |  some title |some lead| subtitle|content 2 |     5      |
+----+-------------+---------+---------+----------+------------+

article table:
+----+-------------+---------+------------------+---------+------------+
| …
Run Code Online (Sandbox Code Playgroud)

mysql nosql rdbms database-design full-text-search

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

最有效的订购后数据库设计

我有 post_order 列的帖子表。我将每个帖子的顺序存储在其中。当我将一行的顺序从 25 更改为 15 时,我应该将所有行从 15 更新到结尾。它适用于几行,但在数千行中最糟糕。

有没有更好的订购帖子的设计,更有效?

mysql database-design design-pattern

4
推荐指数
1
解决办法
317
查看次数

未知的存储引擎“XtraDB”

当我想创建表时,我安装了 Percona Server 5.6.12-rc60.4,例如:

CREATE TABLE IF NOT EXISTS `mydb`.`table` (
`id` INT NOT NULL AUTO_INCREMENT ,
`title` VARCHAR( 64 ) NOT NULL ,
PRIMARY KEY ( `id` ) 
) ENGINE = XtraDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

发生此错误:

 #1286 - Unknown storage engine 'XtraDB' 
Run Code Online (Sandbox Code Playgroud)

如何使用 XtraDB 引擎创建表?

mysql storage-engine percona percona-server xtradb

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

布尔用途列 char(0) 或 tinyint(1)

对于布尔用途列,哪个更好:可为空char(0)tinyint(1).

我知道 bool 是 tinyint(1) 的别名,但在 O'reilly 出版的“高性能 MySQL”一书中说:

“如果您想在单个存储空间中存储真/假值,另一种选择是创建一个可为空的 CHAR(0) 列。该列能够存储值 (NULL) 或零的缺失-length 值(空字符串)。"

哪个更适合大小、性能、索引或...

更新:我发现此链接对这个问题很有用: Innodb Tables 的高效布尔值存储

mysql performance database-design optimization datatypes

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