我正在尝试优化一个简单的SQL查询,该查询将在很多次数据上运行.
这是场景:
一个真实的查询:
SELECT one_field, another_field
FROM big_table
INNER JOIN medium_table ON ( ... )
INNER JOIN small_table ON ( ... )
WHERE week >= #number AND week <= #number AND year >= #number AND year <= #number
AND medium_table.indexed_field = #number
AND small_table.pk= #number
Run Code Online (Sandbox Code Playgroud)
一些测试结果:
如何改进查询或数据库方案?
最好连接我的年/周字段和[yearweek]索引字段?
在一些基准测试中,我看到MyISAM比Innodb更快,但似乎我有一点改进:
http://www.mysqlperformanceblog.com/files/benchmarks/innodb-myisam-falcon.html
http://www.jortk.nl/2008/12/mysql-performance-benchmark-myisam-versus-innodb/
Run Code Online (Sandbox Code Playgroud)
是否值得失去FK并前往MyISAM?
谢谢!
更新:
解释选择:
1 SIMPLE small_table const PRIMARY PRIMARY 4 const 1 Using index
1 SIMPLE medium_table index_merge PRIMARY,Fk_small_table, …Run Code Online (Sandbox Code Playgroud)