一种保证速度的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 *的效率高

mysql查找某个表在哪个库

SELECT table_schema FROM information_schema.TABLES WHERE table_name = '表名';
  • Balmunc
  • Balmunc
  • 2016年09月07日 15:41
  • 3103

【Mysql】禁止在项目中使用跨库联表查询

原因耦合度太高如果两张数据表处于不同的数据库中,那么它们在开始的时候就在不同的子系统中,也就是说在设计过程中没有很强的关联关系,在一句sql中进行关联,不符合分而治之的思想。效率问题如果两个数据库在同...
  • diandianxiyu
  • diandianxiyu
  • 2017年03月07日 15:24
  • 2582

mysql多库表关联问题症结

0、题记项目中使用mysql作为数据存储,需要定期将库表中的数据按照给定格式生成报表。根据导出周期的不同分为:日报、周报、月报、季报、年报等格式。 导出的整个逻辑我来负责编写,前期的日报、周报导出都...
  • wojiushiwo987
  • wojiushiwo987
  • 2017年04月06日 22:28
  • 1768

mySql数据库--判断库、表是否存在

方法一(在查询器?): DELIMITER $$   DROP FUNCTION IF EXISTS `func_check_db_exists`$$   CREATE FUNCTION...
  • xmlife
  • xmlife
  • 2016年04月12日 23:03
  • 3823

lucene 多库联合查询 连库查询

MultiSearcher  每个库都会去查询,总用时等于每个库查询的时间之和ParallelMultiSearcher  可以理解为多线程搜索,会每个库都开出一条线程去查询,查询总用时等于某个线程最...
  • UserNameyyy
  • UserNameyyy
  • 2018年01月19日 11:52
  • 34

mysql库与表的概念

mysql是一个大数据库。有的数据库里面个有种各样的数据。如果不按照规定划分好会显得看起来很乱。凡是东西都要通过整理才能规矩,每一堆数据整理到了一起,然后,所以有了产生了表与库这个东西。我们创建网站的...
  • booljiaoyu
  • booljiaoyu
  • 2016年12月27日 15:09
  • 677

mysql 查询指定数据库所有表, 指定表所有列, 指定列所有表 所有外键及索引, 以及索引的创建和删除

查询指定 数据库 中所有 表 -- 可以把 TABLE_NAME 换成 * 号, 查看更丰富的信息 SELECT TABLE_NAME FROM information_sche...
  • Jimmy_ZRone
  • Jimmy_ZRone
  • 2016年03月18日 12:53
  • 2049

跨库查询和多表查询

介绍如何使用MySQL进行跨库查询和多表查询(几张表的信息纵向连接在一张表中) information_schema MySQL内部使用的数据库 information_schema 和 mysql ...
  • wangligong
  • wangligong
  • 2016年12月07日 22:51
  • 1705

Mysql库表状态查询

SQL库表状态查询
  • waterystone
  • waterystone
  • 2015年02月02日 19:28
  • 970

Mysql跨服务器查询,复制

Mysql跨服务器查询 Mysql跨服务器查询  最近遇到一个问题,需要在两个服务上的两个数据库进行联表查询,本以为一两句SQL语句就能把问题解决,后来发现没有这么简单。  原因很简...
  • samxx8
  • samxx8
  • 2016年08月09日 18:00
  • 1569
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一种保证速度的mysql库表查询写法
举报原因:
原因补充:

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