通过以下3种途径优化了SQL语句执行速度,从平均20秒降低到8秒。
(1) 原来没有使用my.cnf, 这次基于my-huge.cnf产生了自己的my.cnf。
(2)去掉了DocQualifying(),即不再生成临时表 TempTable7,也不需要为TempTable7在字段DocID上建立索引。
(3) 去掉了一个MySQL的function----TermFreq_Discount(), 去掉它后,92个查询试验每个至少比原来减少2秒。
尚有下面措施可以考虑进一步提高SQL语句执行速度。
(1)目前,每次查询都先建立与数据库的连接(connect),然后再disconnect。这样的来回操作很费时间。将来可以采用 http://www.alhem.net/project/mysql 所提供的方法,利用连接池实现与数据库的连接管理。
(2) 利用MySQL Cluster 机制。
(3) 在op710-2机上的QueryTask_Answer表的RetrievedDocID上建立索引,以此提高SELECT语句的查询速度。
那位看到这个帖子的朋友,如果对提高SQL语句的执行速度有什么独到的经验和见解,请留下你的宝贵经验。