Spring hibernate查询效率问题。

程序员Joe 发布于 2014/12/10 16:03
阅读 1K+
收藏 1

三张表关联。每张表大概100w+数据。

单独执行sql语句大概在5s左右。

如果并发量大,数据库压力大了之后客户端反映慢。

求解决方案。缓存?还是如何

本人感觉sql已经没有什么可以提升的地方了。

注:前端我用的是easyui grid展现数据,所以返回数据时,分页查询10条数据大概在2s左右,但是加上查询条件后的总条数查询大概在3s+

在线等大神


补充:

SqlServer2005数据库

表A:人员基础信息表。(150w左右数据)

表B:户籍表。(40w左右)

表C:家庭成员表。(150w左右)此表通过hujiid和B关联,通过personid和A关联。

说白了就是张关系表。

表D:户籍人口表。(150w条数据)此表通过personid与A关联

A是人口基础信息表。D是户籍人口。对表A的扩展。

我现在要查询

存在于家庭成员中的户籍人口

也就是说,首先这个人,必须在D里面,其次他还得在C里面的表A的数据。

试过很多种sql语句了。表连接

having exists等等

现在的sql是这样的,(目前in语句确实相对较快。。。轻喷)


SELECT
    t.*
FROM
    (
        SELECT
            *, rn = ROW_NUMBER () OVER (ORDER BY id)
        FROM
            page_person
        WHERE
            isdelete = 0
        AND id IN (
            SELECT
                personid
            FROM
                page_person_hj
        )
        AND id IN (
            SELECT
                personid
            FROM
                page_huji_jtcy
            WHERE
                hujiid IN (
                    SELECT
                        id
                    FROM
                        page_huji
                    WHERE
                        ssdq LIKE '320281%'
                )
        )
    ) t
WHERE
    t.rn >= 1
AND t.rn <= 10


已经包含了分页了


加载中
0
青木河
青木河
索引?分区表?
0
青木河
青木河
你是后端分页吗??
程序员Joe
程序员Joe
0
巴林的狗尾草
巴林的狗尾草

。。。。。100w数据,单条查询需要5s?你确定使用了索引?说不定你贴出来sql跟表结构别人能给你点儿建议。

然后并发量大是个什么概念?多少个线程同时并发?

你使用的语言框架什么的,怎么也得说出来吧。

查询条件比较单一而且一致的话,缓存是个不错的选择,但是数据库数据是怎么变化的?频繁么?

程序员Joe
程序员Joe
问题已补充啊~~
0
朱宏青
朱宏青

你确定sql已经没什么提升的地方了么?贴出来看看?

程序员Joe
程序员Joe
详细表结构已经补充了,求指教~
0
像風一样自由
像風一样自由

1、考虑加索引

2、考虑分表

3、一个表100万数据量并不是很大,要看表中存的数据是什么类型的,有没有blob数据

4、这个时候尽量少用三张表关联

0
像風一样自由
像風一样自由
对你用的什么语言也有关系的,100万的数据不大,不应该这么慢的,还有你用的什么数据库。比如,MySQL,的引擎不同会又差异,还是Oracle等,详细点,骚年!
0
p2ng
p2ng
用到hibernate了,可以加ehcache上去...应该会有一点点提升.
0
唐代de豆腐
唐代de豆腐
我觉得是sql问题 走走索引吧 几千万13秒差不多
0
mengjunxiaoxiang
mengjunxiaoxiang
还是把表结构和sql发出来看看比较好,100万的数据,索引建的好的情况,应该不至于很慢。
程序员Joe
程序员Joe
详细表结构已经补充了,求指教~~~~~
0
寒情漠漠
寒情漠漠
跟我现在做的类似啊,我做5个表的联合查询,原生sql要2-3S ,经过 easyui grid回来接近5s,我都没得优化,因为表结构一点都不能动,只能使用数据不能修改。 客户嫌慢我也没法,索引都不让加
返回顶部
顶部