当前位置

SQL语句中对有索引的字段增加排序来提升查询速度

James Qi 在 2018年12月29日 - 12:07 提交

  我们采用了直接建表方式搭建Drupal网站后,我记录了一篇《Drupal网站Views生成页面的XML网站地图构建》,这个办法很通用,一般都没有问题,只是在少量情况下可能需要修改MySQL查询语句,例如当数据量很大(如果超过100万条记录)的时候,SQL语句执行时间很长,容易造成RDS云服务器卡死。

  陆续发现过几种情况,也采取措施解决了,但忘记记录博客了。今天再次发生一个站sitemap被爬堵住,导致整台数据库服务器卡住的情况,用下面办法解决,记录下来。

SELECT DISTINCT person FROM gongshang limit 10000 offset 1000000;

  上面的语句执行起来大约需要12秒,person字段创建有索引,也不快。

  增加person这个字段的排序测试,语句如下:

SELECT DISTINCT person FROM gongshang order by person limit 10000 offset 1000000;

  运行起来速度大幅提高,只需要大约1秒,速度提升10倍以上,不会再堵了。

  不过我们试验发现这个办法只适用于加了索引的字段,不适用于主键。

自由标签:

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。