我正在执行一个mysql SELECT语句,第一次运行需要30秒,但之后只需要.2。
我认为清除查询缓存会解决问题(RESET QUERY CACHE),但在此之后仍需要0.2秒。只有重新启动服务器才能将查询恢复为30秒,但在第一次运行之后也需要.2。添加SQL_NO_CACHE也不起作用。
查询:
SELECT id FROM tblOne WHERE szAddress = '123 Main Street' AND szCity = 'LAS VEGAS' AND szStateCode = 'NV'
说明:
"id","select_type","table","type","possible_keys","key","key_len","ref","rows","Extra"
1,"SIMPLE","tblOne","ref","szCity_2,idx_state_active","szCity_2","52","const",62620,"Using where"
还有另一种方法可以让它反复运行(不重新启动服务器),这样我就可以测试添加新索引及其性能吗?
我计划添加地址或地址+城市+州指数。
答案 0 :(得分:3)
SQL_NO_CACHE应该是这样做的方法。我偶然发现了一些配置中的东西,如果它尊重或不尊重,你可以改变,所以你可以检查一下。
此外,http://www.mysqlperformanceblog.com/2007/09/12/query-profiling-with-mysql-bypassing-caches/
E:MySQL - force not to use cache for testing speed of query针对同一问题提供了其他几种解决方案。