AJAX数据库使CPU过程很高

时间:2016-02-18 10:52:20

标签: javascript jquery sql ajax

我的重新编号通知代码:

function loadDoc() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            var Bil = xhttp.responseText;
            document.getElementById("MsgNoti").innerHTML = Bil;

            if ( Bil != ""){    
                if (ChkSession != "Mobile"){
                    window.open("Message/ViewMsgPopUp.asp", "", "width=900,height=600,top=25,left=100");
                }
            }
         }
    };
    xhttp.open("GET", "CheckMsg1.asp", true);
    xhttp.send();
}

这是CheckMsg1.asp中的代码

SQL ="select count(MsgID) over() as bil, MsgID from Msg where PopUpStatus = 'TRUE'"
set read = conn.execute(SQL)
if read.eof then
  Bil = "0"
else
  Bil1= read("bil")
end if

read.close()
Conn.Close()
response.write(Bil1)

我的代码有问题吗?为什么这个代码在25-30用户使用时会在服务器中产生高CPU进程。 AJAX可以在7秒内运行Javascript计时器。请帮忙给我任何建议?此代码在ASP Classic中运行

1 个答案:

答案 0 :(得分:0)

你能试试吗

select count(MsgID)  from Msg where PopUpStatus = 'TRUE' Group by MsgId

我认为Msg表有这么多数据,count()函数扫描表中的所有数据。这很昂贵。

我对你的问题有所了解

1-)您可以使用Nosql db(Mongo,Raven tec。)代替Msg表。只需在Nosql db上写入和读取Msg数据。

2-)尝试在Msg表

上添加索引PopUpStatus

3-)您可以使用汇总表来计算Msg表的数量。你可以在db这个作业上写一个作业得到Count Msg表然后写计数值不同的表