一种保证速度的mysql库表查询写法

原创 2015年11月18日 15:07:01

如果一个Mysql库表达到百万数量级,那么使用普通的SQL语句写法会导致速度逐渐慢到难以忍受,下面是一种可以保证速度的写法。
假设表名称为entity,含有数百万条记录,有一个主键为自增id,另外两列为entityName和url,现在要读取表中的entityName

int total = getTotalCount();//获取记录总数
int limit = 1000;//每次读取的记录个数
int fetchSize = (total + limit - 1) / limit;
for(int i = 0; i < fetchSize; ++i) {//若程序中断,可以修改i的初始值,继续从断掉的地方继续运行
    int startIndex = i * limit;
    if (startIndex >= 10000) {
        sql = "select entityName from entity where id >= (select id from entity order by id asc limit "
             + startIndex + ",1) limit " + limit;
    } else {
        sql = "select entityName from entity order by id asc limit "
             + startIndex + ", " + limit;
    }
    //其余代码略
}

上述代码段的if和else提供了两种查询方法,if中为效率更高的分页查询写法,它先对表中的记录进行定位,然后从这个位置开始取数据;else中即为普通的查询写法,由limit限定每次查询的部分,随着数据的顺序读取,需要跨越的数据块越来越大,导致速度越来越慢。实际的应用表明在整个的查询过程中,第一种方法的速度比较快且稳定。

注意:在写select语句的时候,需要用到哪几列就select哪几列,比select *的效率高

phpmailer在linux下邮件发不出去的问题——给自己加精!!!

mallbuilder下的邮件验证不好使。
  • jbb0403
  • jbb0403
  • 2014年05月22日 12:53
  • 2584

同步信号与异步信号的问题

时钟信号一般为脉冲方波信号,高低电平交错,所以信号存在上升沿与下降沿,同步置零/置位就是在时钟信号上升沿或下降沿时刻出发的信号。异步置零/置位不受CLK(时钟信号)的约束。寄存器的输出信号,有的受CL...

Mysql中使用中间表提高统计查询速度

对于数据量较大的表,在其上进行统计查询通常会效率很低,并且还要考虑统计查询是 否会对在线的应用产生负面影响。通常在这种情况下,使用中间表可以提高统计查询的效率, 下面通过对session 表的统计来介...

MySQL临时表的简单用法 在大数据量时有时会加快查询速度

当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后在这些表运行查询。...

mysql数据库表分区详解(数量过大的数据库表通过分区提高查询速度)

这篇文章主要介绍了MySQL的表分区,例如什么是表分区、为什么要对表进行分区、表分区的4种类型详解等,需要的朋友可以参考下 一、什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表。m...

表分区MySQL版本:5.5.11比5.1查询速度明显提高(4倍左右)

实验1   1、建表: create table `t_part_test`( `id` int NOT NULL default 0, `detail` char(32) NO...

MySQL查询语句写法示例

  • 2013年11月02日 11:46
  • 4KB
  • 下载

Oracle、MYSQL、sql server和DB2分页查询写法

一、DB2:   DB2分页查询   SELECT * FROM (Select 字段1,字段2,字段3,rownumber() over(ORDER BY 排序用的列名 ASC) A...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一种保证速度的mysql库表查询写法
举报原因:
原因补充:

(最多只允许输入30个字)