php - mysql + php 的性能问题

标签 php mysql performance

我有以下 PHP 脚本,它执行 MySQL 查询。

$sSql = "SELECT DISTINCT t1.* "
      . "FROM import_data t1 "
      . "INNER JOIN import_profiles imp on t1.profile_id = imp.id "
      . "WHERE imp.creditornr = " . $vendor . " "
      . "AND t1.vendor = '" . $k . "' "
      . "AND t1.importRun = (SELECT MAX(importRun) AS importRun
         FROM import_data
         WHERE sku=t1.sku
           AND profile_id = t1.profile_id)";

在 native SQL 中,查询如下所示:

SELECT DISTINCT t1.*
FROM import_data t1
INNER JOIN import_profiles imp on t1.profile_id = imp.id
WHERE imp.creditornr = 73329
AND t1.vendor = 'rackmountit'
AND t1.importRun = (SELECT MAX(importRun) AS importRun
            FROM import_data
            WHERE sku=t1.sku
              AND profile_id = t1.profile_id)

这是对其中一个查询的解释:(我运行了超过 10 个查询),并且数据库当前有大约 100.000 个条目(不断增加)。

Explain

此外,这些是此语句中使用的表:

导入数据 Table import_data

导入配置文件 Table import_profiles

我不知道怎么做,因为我不太擅长mysql,但是有什么想法如何提高这些(子)查询的性能吗?目前他们正在运行 > 1:00,我需要优化它。

谢谢,如果您需要更多信息,请告诉我。

编辑 1 添加了 CREATE TABLE 语句

SET NAMES utf8;
SET time_zone = '+00:00';

CREATE TABLE `import_data` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `profile_id` int(11) NOT NULL,
  `sku` varchar(255) NOT NULL,
  `vendor` varchar(255) NOT NULL,
  `evp` double NOT NULL,
  `ek` double NOT NULL,
  `articletext1` text NOT NULL,
  `articletext2` text NOT NULL,
  `ean` text NOT NULL,
  `stock` int(11) NOT NULL,
  `zolltarif` int(11) NOT NULL,
  `tstamp` date NOT NULL,
  `importRun` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


CREATE TABLE `import_profiles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `creditornr` int(6) NOT NULL,
  `structure` text NOT NULL,
  `updatetime` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Import-Profile für Vorlieferanten';

最佳答案

您应该为以下字段添加索引:import_data.profile_id、import_data.sku 和 import_profiles.creditornr 它应该提高您的 SQL 查询速度

关于php - mysql + php 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37138449/

相关文章:

php - PDO MySQL 查询只返回一组结果

mysql - 在 MySQL Datagridview 中将单元格内容转换为超链接

php - 从 mySQL 数据库获取信息时遇到问题

php - 使用 GET 参数从 URL 将 CSV 列表保存到数据库 - PHP/MySQL

php - Mysql触发器和插入值

php - 带有变量的 MySQL UNIX_TIMESTAMP?

MySQL - 从选择内部使用条件

c++ - SIMD XOR 运算不如 Integer XOR 有效?

performance - GLSL:标量与矢量性能

python - 为什么 C++ 代码实现的性能并不比 Python 实现更好?