一種數(shù)據(jù)查詢的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)查詢技術(shù)領(lǐng)域,具體地說(shuō)是一種數(shù)據(jù)查詢的方法。
【背景技術(shù)】
[0002]現(xiàn)今對(duì)于信息的分析和查詢統(tǒng)計(jì)中為了能夠支撐應(yīng)用都需要進(jìn)行大量的數(shù)據(jù)查詢操作,通過(guò)對(duì)大量業(yè)務(wù)的分析,我們發(fā)現(xiàn)絕大部分查詢所涉及到的數(shù)據(jù),可能連續(xù)也可能分散,幾乎沒(méi)有太多的規(guī)律可言,而且通常規(guī)模巨大,能夠緩沖到應(yīng)用系統(tǒng)的內(nèi)存中的相對(duì)總量非常少,絕大部分的查詢?nèi)匀皇侵苯油ㄟ^(guò)數(shù)據(jù)庫(kù)完成的。
[0003]在現(xiàn)有的數(shù)據(jù)查詢方法中,一般為了應(yīng)用系統(tǒng)處理上的簡(jiǎn)便,都將同一類型的數(shù)據(jù)按照固定格式存儲(chǔ)在數(shù)據(jù)庫(kù)的同一張表中。一般用來(lái)存儲(chǔ)數(shù)據(jù)表至少需要兩列,一列標(biāo)識(shí)起始號(hào)碼,一列標(biāo)識(shí)結(jié)束號(hào)碼,相應(yīng)的也會(huì)在這兩列上建立索引,通過(guò)按索引值范圍來(lái)查找數(shù)據(jù)即進(jìn)行索引范圍掃描,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的查詢。但實(shí)際業(yè)務(wù)運(yùn)作中相當(dāng)一部分的數(shù)據(jù)會(huì)被重新分解,形成大量的單個(gè)數(shù)據(jù)和區(qū)間跨度較小的數(shù)據(jù),其中大量的單個(gè)數(shù)據(jù)也就是所謂的各自分離、不連續(xù)的分散數(shù)據(jù)。分散數(shù)據(jù)的增加會(huì)導(dǎo)致表數(shù)據(jù)規(guī)模膨脹、數(shù)據(jù)規(guī)律性降低,從而導(dǎo)致了查詢效率的降低,因此難以適應(yīng)數(shù)據(jù)量巨大的特點(diǎn)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的技術(shù)任務(wù)是提供一種數(shù)據(jù)查詢的方法。
[0005]本發(fā)明的技術(shù)任務(wù)是按以下方式實(shí)現(xiàn)的,該數(shù)據(jù)查詢方法步驟如下:
步驟1:把數(shù)據(jù)庫(kù)中的數(shù)據(jù)分離為分散數(shù)據(jù)和連續(xù)數(shù)據(jù),并分別存放在分散數(shù)據(jù)表和連續(xù)數(shù)據(jù)表中;
步驟2:確定分散數(shù)據(jù)表和連續(xù)數(shù)據(jù)表的查詢順序,記錄統(tǒng)計(jì)分析項(xiàng)目及當(dāng)前查詢順序,并設(shè)定統(tǒng)計(jì)開(kāi)始時(shí)間和統(tǒng)計(jì)結(jié)束時(shí)間,將記錄的查詢總次數(shù)加一;
步驟3:根據(jù)查詢順序進(jìn)行數(shù)據(jù)查詢;
步驟4:判斷是否到達(dá)統(tǒng)計(jì)結(jié)束時(shí)間;
步驟5:判斷是否有信的查詢請(qǐng)求;
步驟6:根據(jù)記錄的一次查詢成功次數(shù)、二次查詢成功次數(shù)及查詢總次數(shù),確定所述查詢順序。
[0006]所述的步驟I具體操作如下:
步驟11:提取數(shù)據(jù)庫(kù)中的一條記錄;
步驟12:判斷記錄的索引起始數(shù)據(jù)和索引結(jié)束數(shù)據(jù)是否相等;如果相等則將該記錄插入分散數(shù)據(jù)表中;如果不相等則將該記錄插入連續(xù)數(shù)據(jù)表中;
步驟13:判斷數(shù)據(jù)庫(kù)中的記錄是否提取完成。
[0007]所述步驟3具體操作如下:
步驟300:判斷所述查詢順序是否為先查分散數(shù)據(jù)表;
步驟310:對(duì)分散數(shù)據(jù)表以標(biāo)識(shí)索引起始數(shù)據(jù)的列進(jìn)行唯一索引查詢,并判斷查詢是否成功;
步驟311:將記錄的一次查詢成功的次數(shù)加一,然后結(jié)束;
步驟320:對(duì)連續(xù)數(shù)據(jù)表以標(biāo)識(shí)索引起始數(shù)據(jù)和索引結(jié)束數(shù)據(jù)的兩個(gè)列進(jìn)行復(fù)合索引查詢;
步驟321:將記錄的二次查詢成功的次數(shù)加一,然后結(jié)束;
步驟3101:對(duì)連續(xù)數(shù)據(jù)表以標(biāo)識(shí)索引起始數(shù)據(jù)和索引結(jié)束數(shù)據(jù)的兩個(gè)列進(jìn)行復(fù)合索引查詢;
步驟3111:將記錄的一次查詢成功的次數(shù)加一,然后結(jié)束;
步驟3201:對(duì)分散數(shù)據(jù)表以標(biāo)識(shí)索引起始數(shù)據(jù)的列進(jìn)行唯一索引查詢;
步驟3211:將記錄的二次查詢成功的次數(shù)加一,然后結(jié)束。
[0008]所述的步驟6具體操作如下:
步驟61:根據(jù)以下公式計(jì)算一次成功的成功率和二次成功的成功率:
一次查詢成功率=一次查詢成功次數(shù)/查詢總次數(shù);
二次查詢成功率=二次查詢成功次數(shù)/查詢總次數(shù);
步驟62:比較一次成功的成功率是否大于二次成功的成功率;
步驟63:確定查詢順序?yàn)樯洗尾樵冺樞?,然后結(jié)束;
步驟64:交換上次查詢順序中分散數(shù)據(jù)表和連續(xù)數(shù)據(jù)表的順序后作為查詢順序,然后結(jié)束。
[0009]本發(fā)明的一種數(shù)據(jù)查詢的方法和現(xiàn)有技術(shù)相比,在查詢數(shù)據(jù)的時(shí)候,分散數(shù)據(jù)表使用索引唯一掃描,無(wú)需使用低效的索引范圍掃描:而連續(xù)數(shù)據(jù)表則繼續(xù)使用索引范圍掃描,有效的減小了數(shù)據(jù)規(guī)模,使得數(shù)據(jù)查詢效率得到了有效控制,并且該查詢方法通用性強(qiáng),簡(jiǎn)單易用。
【附圖說(shuō)明】
[0010]附圖1為一種數(shù)據(jù)查詢的方法的流程框圖。
[0011]附圖2為一種數(shù)據(jù)查詢的方法的具體流程框圖。
【具體實(shí)施方式】
[0012]實(shí)施例1:
該數(shù)據(jù)查詢方法步驟如下:
步驟1:把數(shù)據(jù)庫(kù)中的數(shù)據(jù)分離為分散數(shù)據(jù)和連續(xù)數(shù)據(jù),并分別存放在分散數(shù)據(jù)表和連續(xù)數(shù)據(jù)表中;
步驟11:提取所述數(shù)據(jù)庫(kù)中的一條記錄,如果提取成功則執(zhí)行步驟12,如果提取不成功則結(jié)束;
步驟12:判斷所述記錄的索引起始數(shù)據(jù)和索引結(jié)束數(shù)據(jù)是否相等;如果相等則將該記錄插入所述分散數(shù)據(jù)表中;如果不相等則將該記錄插入所述連續(xù)數(shù)據(jù)表中;
步驟13:判斷所述數(shù)據(jù)庫(kù)中的記錄是否提取完成,是則執(zhí)行步驟2,否則執(zhí)行步驟11。
[0013]步驟2:確定分散數(shù)據(jù)表和連續(xù)數(shù)據(jù)表的查詢順序,記錄統(tǒng)計(jì)分析項(xiàng)目及當(dāng)前查詢順序,并設(shè)定統(tǒng)計(jì)開(kāi)始時(shí)間和統(tǒng)計(jì)結(jié)束時(shí)間,將記錄的查詢總次數(shù)加一; 步驟3:根據(jù)查詢順序進(jìn)行數(shù)據(jù)查詢;
步驟300:判斷所述查詢順序是否為先查分散數(shù)據(jù)表,是則執(zhí)行步驟310,否則執(zhí)行步驟 3101 ;
步驟310:對(duì)所述分散數(shù)據(jù)表以標(biāo)識(shí)索引起始數(shù)據(jù)的列進(jìn)行唯一索引查詢,并判斷查詢是否成功,如果查詢成功則執(zhí)行步驟311,如果查詢不成功則執(zhí)行步驟320 ;
步驟311:將記錄的一次查詢成功的次數(shù)加一,然后結(jié)束;
步驟320:對(duì)所述連續(xù)數(shù)據(jù)表以標(biāo)識(shí)索引起始數(shù)據(jù)和索引結(jié)束數(shù)據(jù)的兩個(gè)列進(jìn)行復(fù)合索引查詢,并判斷查詢是否成功,如果查詢成功則執(zhí)行步驟321:如果查詢不成功則結(jié)束;步驟321:將記錄的二次查詢成功的次數(shù)加一,然后結(jié)束;
步驟3101:對(duì)所述連續(xù)數(shù)據(jù)表以標(biāo)識(shí)索引起始數(shù)據(jù)和索引結(jié)束數(shù)據(jù)的兩個(gè)列進(jìn)行復(fù)合索引查詢,并判斷查詢是否成功,如果查詢成功則執(zhí)行步驟3111:如果查詢不成功則執(zhí)行步驟3201 ;
步驟3111:將記錄的一次查詢成功的次數(shù)加一,然后結(jié)束;
步驟3201:對(duì)所述分散數(shù)據(jù)表以標(biāo)識(shí)索引起始數(shù)據(jù)的列進(jìn)行唯一索引查詢,并判斷查詢是否成功,如果查詢不成功則結(jié)束,如果查詢成功則執(zhí)行步驟3211 ;
步驟3211:將記錄的二次查詢成功的次數(shù)加一,然后結(jié)束。
[0014]步驟4:判斷是否到達(dá)統(tǒng)計(jì)結(jié)束時(shí)間;
步驟5:判斷是否有信的查詢請(qǐng)求;
步驟6:根據(jù)記錄的一次查詢成功次數(shù)、二次查詢成功次數(shù)及查詢總次數(shù),確定所述查詢順序。
[0015]步驟61:根據(jù)以下公式計(jì)算一次成功的成功率和二次成功的成功率:
一次查詢成功率=一次查詢成功次數(shù)/查詢總次數(shù);
二次查詢成功率=二次查詢成功次數(shù)/查詢總次數(shù);
步驟62:比較所述一次成功的成功率是否大于所述二次成功的成功率,是則執(zhí)行步驟63,否則執(zhí)行步驟64;
步驟63:確定所述查詢順序?yàn)樯洗尾樵冺樞?,然后結(jié)束;
步驟64:交換上次查詢順序中分散數(shù)據(jù)表和連續(xù)數(shù)據(jù)表的順序后作為所述查詢順序,然后結(jié)束。
[0016]通過(guò)上面【具體實(shí)施方式】,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實(shí)現(xiàn)本發(fā)明。但是應(yīng)當(dāng)理解,本發(fā)明并不限于上述的幾種【具體實(shí)施方式】。在公開(kāi)的實(shí)施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實(shí)現(xiàn)不同的技術(shù)方案。
【主權(quán)項(xiàng)】
1.一種數(shù)據(jù)查詢的方法,其特征在于,該數(shù)據(jù)查詢方法步驟如下: 步驟1:把數(shù)據(jù)庫(kù)中的數(shù)據(jù)分離為分散數(shù)據(jù)和連續(xù)數(shù)據(jù),并分別存放在分散數(shù)據(jù)表和連續(xù)數(shù)據(jù)表中; 步驟2:確定分散數(shù)據(jù)表和連續(xù)數(shù)據(jù)表的查詢順序,記錄統(tǒng)計(jì)分析項(xiàng)目及當(dāng)前查詢順序,并設(shè)定統(tǒng)計(jì)開(kāi)始時(shí)間和統(tǒng)計(jì)結(jié)束時(shí)間,將記錄的查詢總次數(shù)加一; 步驟3:根據(jù)查詢順序進(jìn)行數(shù)據(jù)查詢; 步驟4:判斷是否到達(dá)統(tǒng)計(jì)結(jié)束時(shí)間; 步驟5:判斷是否有信的查詢請(qǐng)求; 步驟6:根據(jù)記錄的一次查詢成功次數(shù)、二次查詢成功次數(shù)及查詢總次數(shù),確定所述查詢順序。
2.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)查詢的方法,其特征在于,所述的步驟I具體操作如下: 步驟11:提取數(shù)據(jù)庫(kù)中的一條記錄; 步驟12:判斷記錄的索引起始數(shù)據(jù)和索引結(jié)束數(shù)據(jù)是否相等;如果相等則將該記錄插入分散數(shù)據(jù)表中;如果不相等則將該記錄插入連續(xù)數(shù)據(jù)表中; 步驟13:判斷數(shù)據(jù)庫(kù)中的記錄是否提取完成。
3.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)查詢的方法,其特征在于,所述步驟3具體操作如下: 步驟300:判斷所述查詢順序是否為先查分散數(shù)據(jù)表; 步驟310:對(duì)分散數(shù)據(jù)表以標(biāo)識(shí)索引起始數(shù)據(jù)的列進(jìn)行唯一索引查詢,并判斷查詢是否成功; 步驟311:將記錄的一次查詢成功的次數(shù)加一,然后結(jié)束; 步驟320:對(duì)連續(xù)數(shù)據(jù)表以標(biāo)識(shí)索引起始數(shù)據(jù)和索引結(jié)束數(shù)據(jù)的兩個(gè)列進(jìn)行復(fù)合索引查詢; 步驟321:將記錄的二次查詢成功的次數(shù)加一,然后結(jié)束; 步驟3101:對(duì)連續(xù)數(shù)據(jù)表以標(biāo)識(shí)索引起始數(shù)據(jù)和索引結(jié)束數(shù)據(jù)的兩個(gè)列進(jìn)行復(fù)合索引查詢; 步驟3111:將記錄的一次查詢成功的次數(shù)加一,然后結(jié)束; 步驟3201:對(duì)分散數(shù)據(jù)表以標(biāo)識(shí)索引起始數(shù)據(jù)的列進(jìn)行唯一索引查詢; 步驟3211:將記錄的二次查詢成功的次數(shù)加一,然后結(jié)束。
4.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)查詢的方法,其特征在于,所述的步驟6具體操作如下: 步驟61:根據(jù)以下公式計(jì)算一次成功的成功率和二次成功的成功率: 一次查詢成功率=一次查詢成功次數(shù)/查詢總次數(shù); 二次查詢成功率=二次查詢成功次數(shù)/查詢總次數(shù); 步驟62:比較一次成功的成功率是否大于二次成功的成功率; 步驟63:確定查詢順序?yàn)樯洗尾樵冺樞?,然后結(jié)束; 步驟64:交換上次查詢順序中分散數(shù)據(jù)表和連續(xù)數(shù)據(jù)表的順序后作為查詢順序,然后結(jié)束。
【專利摘要】本發(fā)明公開(kāi)了一種數(shù)據(jù)查詢的方法,該數(shù)據(jù)查詢方法步驟如下:把數(shù)據(jù)庫(kù)中的數(shù)據(jù)分離為分散數(shù)據(jù)和連續(xù)數(shù)據(jù),并分別存放在分散數(shù)據(jù)表和連續(xù)數(shù)據(jù)表中;確定分散數(shù)據(jù)表和連續(xù)數(shù)據(jù)表的查詢順序,記錄統(tǒng)計(jì)分析項(xiàng)目及當(dāng)前查詢順序,并設(shè)定統(tǒng)計(jì)開(kāi)始時(shí)間和統(tǒng)計(jì)結(jié)束時(shí)間,將記錄的查詢總次數(shù)加一;根據(jù)查詢順序進(jìn)行數(shù)據(jù)查詢;判斷是否到達(dá)統(tǒng)計(jì)結(jié)束時(shí)間;判斷是否有信的查詢請(qǐng)求;根據(jù)記錄的一次查詢成功次數(shù)、二次查詢成功次數(shù)及查詢總次數(shù),確定所述查詢順序。本發(fā)明有效的減小了數(shù)據(jù)規(guī)模,使得數(shù)據(jù)查詢效率得到了有效控制,并且該查詢方法通用性強(qiáng),簡(jiǎn)單易用。
【IPC分類】G06F17-30
【公開(kāi)號(hào)】CN104636503
【申請(qǐng)?zhí)枴緾N201510103839
【發(fā)明人】何嘉, 孫海峰, 尤孝吉
【申請(qǐng)人】浪潮集團(tuán)有限公司
【公開(kāi)日】2015年5月20日
【申請(qǐng)日】2015年3月10日