我正在尝试优化SELECT SQL_NO_CACHE col FROM TABLE ..
形式的查询。当我第一次连接到数据库并执行查询时,大约需要9秒。当我第二次执行查询时需要大约0.1秒。我将SQL_NO_CACHE放在查询中以确保mysql不从缓存中读取结果。我的问题是为什么在连接到数据库(mysql -uroot ...
)之后第一次执行查询所花费的时间比后续执行要长得多。查询的实际执行时间是多少?
答案 0 :(得分:2)
MySQL可能需要一段时间来预热其内部缓存。请记住,SQL_NO_CACHE
表示仅避免查询缓存。从性能角度来看,索引缓存是最重要的。如果没有读取索引,则在第一次使用时会有很大的损失。
如果您正在使用InnoDB,请确保缓冲池足够大。大多数服务器应至少分配几GB的内存。