小编Goo*_*bot的帖子

同时创建多个mysql临时表是不是很糟糕?

我需要进行大量的统计分析才能向用户提供一些数据。目前,我从 mysql 捕获数据并通过PHP数组处理它们。但是,mysql 临时表要好得多(比 PHP 数组效率更高、速度更快;显然是由于它们的机制)。

我的暂定解决方案是在每次请求(即连接)时形成一个临时表来导入和处理数据。但是,我不确定同时创建多个临时表是否有缺点?

这会给mysql服务器带来问题吗?或者我可以在众多同时请求中使用它作为 PHP 数组的替代方案?

mysql memory mysql-5.5 temporary-tables

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

如何调整 innodb_read_io_threads ?

innodb_read_io_threads和的默认值为innodb_write_io_threads4。如何检查您的服务器负载是否需要更高数量的线程?

正如我定期检查的那样show engine innodb status \G,没有可追踪的活动:

--------
FILE I/O
--------
I/O thread 0 state: waiting for completed aio requests (insert buffer thread)
I/O thread 1 state: waiting for completed aio requests (log thread)
I/O thread 2 state: waiting for completed aio requests (read thread)
...
I/O thread 32 state: waiting for completed aio requests (write thread)
I/O thread 33 state: waiting for completed aio requests (write thread)
Pending normal aio reads: [0, 0, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

mysql innodb mariadb tuning

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

在 mysql 中为 ON DELETE CASCADE 使用外键和引用

我在想这两种创建外键的方法是一样的

CREATE TABLE child1 (
id int(11) not null auto_increment,
parent_id int(11) REFERENCES parent_table(parent_id) ON DELETE CASCADE,
PRIMARY KEY(id)
);
Run Code Online (Sandbox Code Playgroud)

CREATE TABLE child2 (
id int(11) not null auto_increment,
parent_id int(11),
PRIMARY KEY(id),
FOREIGN KEY(parent_id) REFERENCES parent_table(parent_id) ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)

但是当从父表中删除一条记录时,表中相应的记录child2将被删除,而不是表中的记录child1

我哪里错了?REFERENCES是不够的,我们需要写FOREIGN KEY使用ON DELETE CASCADE

mysql foreign-key

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

列的顺序对 INSERT 有显着影响吗?

对于这两个查询,我们是否体验到明显的性能差异?

INSERT INTO table (col1, col2, col3, col4, col5) ...
Run Code Online (Sandbox Code Playgroud)

INSERT INTO table (col5, col3, col1, col2, col4) ...
Run Code Online (Sandbox Code Playgroud)

是否需要INSERT按照表中列的顺序排列列?

mysql innodb performance query insert query-performance

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

两列的两侧 UNIQUE INDEX

创建具有复合PRIMARY KEYUNIQUE INDEX用于两列的表可保证 col1、col2 的唯一性。是否有一种棘手的方法可以使两列的相反顺序也成为 UNIQUE (col2, col1)?

例如

PRIMARY KEY (col1, col2)
Run Code Online (Sandbox Code Playgroud)

或者

UNIQUE INDEX (col1, col2)
Run Code Online (Sandbox Code Playgroud)

如果我们有col1=33 && col2=54; 我们如何才能避免INSERTcol1=54 && col2=33

mysql primary-key duplication unique-constraint

6
推荐指数
2
解决办法
6429
查看次数

mysql InnoDB 中的许多 NULL 列是否有害?

在探索 InnoDB 的聚集 B 树索引系统时,我认为许多 NULL(或小)列的存在对 InnoDB 性能没有显着影响。

多余列的存在是否会降低 mysql 的性能?

PS我尝试了实际测试,但没有显着效果。不过我觉得应该是在重载的情况下比较的。这就是我很想了解关于这件事的技术推理的原因。

mysql innodb mysql-5 performance null

6
推荐指数
2
解决办法
9160
查看次数

带有 WHERE 子句的多个“GROUP_CONCAT”

在表中作为

id    name      type           info
1     BMW       car            yes
2     Reno      car            no
3     IBM       electronics    no
4     Sony      electronics    yes
5     Mazda     car            yes
Run Code Online (Sandbox Code Playgroud)

GROUP_CONCAT用来获取每个的列表type,但我想将连接的列分隔为按列分类的多个列info。它应该是这样的

SELECT type,
       GROUP_CONCAT(name) ORDER BY id ASC SEPARATOR ' ') AS list_with_info
       GROUP_CONCAT(name) ORDER BY id ASC SEPARATOR ' ') AS list_without_info
       FROM table1 GROUP BY type
Run Code Online (Sandbox Code Playgroud)

如何引入WHERE子句或使用其他方法返回多个连接列?

mysql select group-by group-concatenation

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

使用 UNIQUE 解析列的 DUPLICATE

我有几列与UNIQUE INDEX. 在某些查询中,重复应该是可以接受的,其中应该将后缀添加到值中。例如,如果test title退出,我们将其更改为test title-2

有没有办法让一个独特的价值DUPLICATE

INSERT INTO table1
  (title, abr, name) 
  VALUES
  ('title', 'abr', 'name')
Run Code Online (Sandbox Code Playgroud)

在这个典型示例中,所有三列都是UNIQUE. 当INSERT失败时,我不知道是哪个col导致错误改变了它对应的值。

如何进行查询valuevalue-identifier在重复错误时更改为?

mysql innodb duplication unique-constraint

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

如何在条件更新中重新分配两个变量

考虑一个简单的更新为

SET @var1 = 20;
SET @var2 = 26;
UPDATE table1 SET
    col1=IF(@var1>50, @var1 := @var1-col4, @var1 := @var1+col5),
    col2=IF(@var2>50, @var2 := @var2-col6, @var2);
Run Code Online (Sandbox Code Playgroud)

我们如何在一种情况下改变两个变量。例如,考虑当 时@var1<50,我们不仅要更改@var1 := @var1+col5,还要重新分配@var2 := @var2 + 100。事实上,不管条件2,@var2如果第一个条件失败(第二部分),我们要增加。

是否可以在 a 中重新分配两个用户变量,IF STATEMENT或者我们需要添加另一个IF STATEMENT

这将相当于

SET @var1 = 20;
SET @var2 = 26;
UPDATE table1 SET
    col1=IF(@var1>50, @var1 := @var1-col4, @var1 := @var1+col5),
    virtual_col=IF(@var1>50, NULL, @var2 := @var2+100),
    col2=IF(@var2>50, @var2 := @var2-col6, @var2);
Run Code Online (Sandbox Code Playgroud)

在这里,我们已经创建了一个无用的列,而不是收集数据,但重复IF …

mysql update

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

如何使用 LOW_PRIORITY 进行繁重的查询?

UPDATE在管理员级别安排了大量查询,并且由于它们是UPDATE带有多个JOINs 的大量 s,因此消耗了大量资源。

我不希望他们在执行如此繁重的UPDATE任务时阻止最终用户执行基本任务。

LOW_PRIORITY为了这个目的吗?或者我应该遵循另一种策略?

UPDATE LOW_PRIORITY ....
Run Code Online (Sandbox Code Playgroud)

请注意,我的引擎是innoDB.

mysql innodb performance mysql-5.5 update query-performance

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