Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 加速两个数据库之间的连接_Mysql_Performance_Left Join - Fatal编程技术网

Mysql 加速两个数据库之间的连接

Mysql 加速两个数据库之间的连接,mysql,performance,left-join,Mysql,Performance,Left Join,我有这个问题,需要40秒,有没有办法加快速度?多谢各位 SELECT *, last.Date FROM constant.derogation der LEFT JOIN variable.last last ON der.code = last.code WHERE 1 = 1 AND status != 'removed' ORDER BY status; 这是两个表的结构,两个数据库位于同一服务器上。 我将只从最后一个表中获取一个值

我有这个问题,需要40秒,有没有办法加快速度?多谢各位

SELECT *, last.Date
FROM constant.derogation der             
LEFT JOIN variable.last last             
ON der.code = last.code
WHERE 1 = 1
AND status != 'removed'
ORDER BY status;
这是两个表的结构,两个数据库位于同一服务器上。 我将只从最后一个表中获取一个值

DLL


| derogation | CREATE TABLE `derogation` (
  `xxx` char(10) NOT NULL,
  `xxx` varchar(100) DEFAULT NULL,
  `code` char(17) DEFAULT NULL,
  `xxx` varchar(20) DEFAULT NULL,
  `xxx` char(6) DEFAULT NULL,
  `xxx` varchar(50) DEFAULT NULL,
  `xxx` varchar(200) DEFAULT NULL,
  `xxxx` varchar(200) DEFAULT NULL,
  `xxxx` varchar(100) DEFAULT NULL,
  `xxxx` datetime DEFAULT NULL,
  `xxx` varchar(100) DEFAULT NULL,
  `xxxx` varchar(20) DEFAULT NULL,
  `xxx` varchar(50) DEFAULT NULL,
  `xxx` varchar(10) DEFAULT NULL,
  `xxx` datetime DEFAULT NULL,
  `xxx` varchar(10) DEFAULT NULL,
  `xxx` datetime DEFAULT NULL,
  `xxx` datetime DEFAULT NULL,
  `status` varchar(20) DEFAULT NULL,
  `xxx` varchar(1000) DEFAULT NULL,
  KEY `code_index_derogation` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |


| Last | CREATE TABLE `Last` (
  `code` char(17) DEFAULT NULL,
  `xxx` decimal(10,2) DEFAULT NULL,
  `Date` datetime DEFAULT NULL,
  `xxxx` datetime DEFAULT NULL,
  `xxxx` datetime DEFAULT NULL,
  `xxxx` text DEFAULT NULL,
  `xxxxx` datetime DEFAULT NULL,
  `xxxx` char(6) DEFAULT NULL,
  KEY `idx_Last_Code` (`code`),
  KEY `idx_Last_xxx` (`xxx`),
  KEY `code_index` (`code`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |



XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

您可以使用临时表、临时表CTE或为表的列添加索引。 但使用临时表来加速SQL查询的执行总是一个很好的选择。

(这个问题很微妙,在本论坛中经常被忽略。)

不要混淆排序规则。您正在加入
code
,但是
字符集
排序规则
在这两个表之间是不同的。建议使用'altertable。。转换为。。让他们保持一致

其他提示:

  • 仅对真正固定长度的列使用
    CHAR
    。否则使用
    VARCHAR

  • 在每个表上都有一个
    主键

  • 如果你真的希望加入,不要说“左加入”;这给读者增加了困惑


显示两个表的DDL。按
状态
列显示统计信息。请在每列前面加上表(或表别名),以确定其来源。这对您来说可能是显而易见的,但对我们来说不是。切勿使用
SELECT*
。始终只命名(并限定)实际要返回的列。这两个表之间的关系是什么?是1:1还是1:n?@forpas奇怪的是,我认为状态属于最后一个,但情况并非如此。这是我的第一个选项,但速度较慢。我正在使用python查询表,所以我没有考虑使用这个选项,但我可能会使用它。非常感谢。因此,请在您的问题中添加Python作为标记。

| derogation | CREATE TABLE `derogation` (
  `xxx` char(10) NOT NULL,
  `xxx` varchar(100) DEFAULT NULL,
  `code` char(17) DEFAULT NULL,
  `xxx` varchar(20) DEFAULT NULL,
  `xxx` char(6) DEFAULT NULL,
  `xxx` varchar(50) DEFAULT NULL,
  `xxx` varchar(200) DEFAULT NULL,
  `xxxx` varchar(200) DEFAULT NULL,
  `xxxx` varchar(100) DEFAULT NULL,
  `xxxx` datetime DEFAULT NULL,
  `xxx` varchar(100) DEFAULT NULL,
  `xxxx` varchar(20) DEFAULT NULL,
  `xxx` varchar(50) DEFAULT NULL,
  `xxx` varchar(10) DEFAULT NULL,
  `xxx` datetime DEFAULT NULL,
  `xxx` varchar(10) DEFAULT NULL,
  `xxx` datetime DEFAULT NULL,
  `xxx` datetime DEFAULT NULL,
  `status` varchar(20) DEFAULT NULL,
  `xxx` varchar(1000) DEFAULT NULL,
  KEY `code_index_derogation` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |


| Last | CREATE TABLE `Last` (
  `code` char(17) DEFAULT NULL,
  `xxx` decimal(10,2) DEFAULT NULL,
  `Date` datetime DEFAULT NULL,
  `xxxx` datetime DEFAULT NULL,
  `xxxx` datetime DEFAULT NULL,
  `xxxx` text DEFAULT NULL,
  `xxxxx` datetime DEFAULT NULL,
  `xxxx` char(6) DEFAULT NULL,
  KEY `idx_Last_Code` (`code`),
  KEY `idx_Last_xxx` (`xxx`),
  KEY `code_index` (`code`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |