【问题标题】:tecdoc query take more than 5 minutestecdoc 查询需要 5 分钟以上
【发布时间】:2018-07-20 14:14:47
【问题描述】:

我有 tecdoc 数据库,我想进行一个简单的查询以从一个类别中为一种引擎获取所有文章,这个查询将是执行次数最多的,但它需要超过 5 分钟,我正在使用带有 InnoDB 引擎的 mysql:

SELECT
    LA_ART_ID
FROM
               TOF_LINK_GA_STR
    INNER JOIN TOF_LINK_LA_TYP ON LAT_TYP_ID = $engine AND
                              LAT_GA_ID = LGS_GA_ID
    INNER JOIN TOF_LINK_ART ON LA_ID = LAT_LA_ID
WHERE
    LGS_STR_ID <=> $category
ORDER BY
    LA_ART_ID

 $engine = engine code;
 $category = category id;

我对 LAT_TYP_ID、LAT_GA_ID、LAT_TYP_ID+LAT_GA_ID、LA_ID、LGS_STR_ID 进行了索引,但没有成功,该表有超过 1.5 亿个条目。我做错了什么?

【问题讨论】:

  • 说这是“tecdoc db”而没有进一步的细节将这个问题限制为熟悉 tecdoc db 的用户(由于您没有得到回复,似乎不足以得到一个答案)。要扩大池,您应该添加:表的结构(这些列中的哪些属于哪个表),解释输出(使用explain select LA_ART_ID ...),每个表中有多少行(哪个表有 150 行,其他多少),以及从查询中获得多少结果(一个类别中有多少项目,有多少属于引擎,两者都有多少)。
  • 您好,请问您在哪里找到了 MySQL TecDoc 数据库?我正在寻找 PHP 解析器,因为我只有文本文件中的数据,谢谢!

标签: mysql sql localhost


【解决方案1】:

我更改了 my.ini 中的一些设置

innodb_read_io_threads=2
innodb_write_io_threads=4
innodb_log_file_size = 512M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=0
skip-innodb_doublewrite

并且通过解释功能,我将时间从几分钟缩短到了具有正确索引的秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 2016-01-05
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多