我的Google云sql表目前有1126571行,每天最少添加3万行。执行查询时:
select count(distinct sno) as tot from visits
sql提示它会产生以下错误:
Error 0: Unable to execute statement
。 Cloud SQL Query是否容易超过60秒异常。当桌子变大时如何克服这个问题。
答案 0 :(得分:1)
将表分成两个表。一个接收新的访问...交易......一个用于报告。索引报告表。定期传输和清除数据。
交易表将保持相对较小,因此可以快速计算。由于索引,报告表将快速计算。
答案 1 :(得分:0)
在您的专栏INDEX
中添加sno
,这样可以提高其效果。
ALTER TABLE visits ADD INDEX (sno)
答案 2 :(得分:0)
尝试拆分许多部分的选择查询,例如,第一个选择查询必须限制为50000,然后第二个选择查询必须从50000开始并限制为50000,依此类推。
您可以通过以下方案执行此操作:
1-获取记录数。
2-制作循环并使其以记录计数结束。
3-对于每个循环,使select查询选择50000条记录并将结果附加到数据表(取决于您的编程语言)
4-在下一个循环中,您必须从上一个循环结束的位置开始选择,例如,第二个查询必须选择下一个50000记录,依此类推。
您可以通过此SQL查询语句指定选择起始索引:
SELECT * FROM mytable somefield LIMIT 50000 OFFSET 0;
然后您将获得所需的全部数据。
注意:进行测试以查看在60秒内可以加载的最大记录数量,这将减少您的循环,从而提高性能。