我有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上做了索引,但没有成功,该表有超过150 mil的条目。我做错了什么?
答案 0 :(得分:0)
我更改了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
并且通过解释功能,我将时间从分钟减少到使用正确索引的秒数。