7

我的谷歌云 sql 表目前有 1126571 行,每天至少增加 3 万行。执行查询时:

select count(distinct sno) as tot from visits

sql提示会产生如下错误:

Error 0: Unable to execute statement 

. Cloud SQL Query 是否会出现超过 60 秒的异常。当表变大时如何克服这个问题。

4

3 回答 3

1

把桌子分成两张桌子。一个接收新的访问......交易......一个用于报告。索引报告表。定期传输和清除数据。

事务表将保持相对较小,因此计数会很快。由于索引,报表将很快计数。

于 2012-12-29T20:43:27.433 回答
0

INDEX在您的列中添加一个,sno它将提高其性能。

ALTER TABLE visits ADD INDEX (sno)
于 2012-10-19T09:09:02.360 回答
0

尝试将您的 select 查询拆分为多个部分,例如,第一个 select 查询必须限制为 50000,然后第二个 select 查询必须从 50000 开始并限制为 50000 等等。

您可以通过这种情况来做到这一点:

1-获取记录数。

2-制作一个循环并使其在记录数处结束。

3-对于每个循环,使选择查询选择 50000 条记录并将结果附加到数据表(取决于您的编程语言是什么)

4- 在下一个循环中,您必须从上一个循环结束的位置开始选择,例如,第二个查询必须选择接下来的 50000 条记录,依此类推。

您可以通过此 SQL 查询语句指定您的选择起始索引:

SELECT * FROM mytable somefield LIMIT 50000 OFFSET 0;

然后,您将获得所需的全部数据。

注意:进行测试以查看在 60 秒内可以加载的最大记录数,这将减少循环,从而提高性能。

于 2014-07-21T05:19:12.623 回答