索引能夠發揮作用,主要由兩個因素決定,返回行數和叢集因子
主要根據叢集因子的大小來決定
叢集因子(CLUSTERING_FACTOR)是對錶的有序性的量度,通過一個索引掃描一張表時需要訪問表的資料庫的數量;
一個欄位上有索引,但有時執行sql語句時看執行計劃時不走索引,就有可能是叢集因子過高導致的。
叢集因子的計算方法:
T表的ID列,首先對ID列進行從小到大排序,得到序列(1,1,1,2,3,4,5,5,5..........);
初始化叢集因子為0;
然後依次檢視序列中所在的儲存塊,如果在同一個塊,則叢集因子不變,否則加1;
所以,極端情況下,叢集因子為行數,理想情況下,約為塊數;
可以看到,叢集因子越接近塊數,查詢索引的一個值所需訪問的塊數就越少,索引也有效。
而當叢集因子接近行數時,查詢索引的一個值所需訪問的塊數就越多,甚至不弱全表掃描,即使SQL返回的行數為1%,可能也用不上索引。
從叢集因子的演算法來看,叢集因子只與資料分佈有關,如果叢集因子過大,重建索引毫無作用,只有刪除表的資料,重新按照索引列排序插入,改變資料分佈;
如果叢集因子接近於表中塊的數量,則表示索引適當排序;如果叢集因子接近於表中行的數量,則表示索引沒有適當排序
相關推薦
索引能夠發揮作用,主要由兩個因素決定,返回行數和叢集因子
主要根據叢集因子的大小來決定 叢集因子(CLUSTERING_FACTOR)是對錶的有序性的量度,通過一個索引掃描一張表時需要訪問表的資料庫的數量; 一個欄位上有索引,但有時執行sql語句時看執行計劃時不走索引,就有可能是叢集因子過高導致的。 叢集因子的計算方法:
定義一個複數類Complex,過載運算子“+”,“-”,“*”,“/”,使之能用於複數的加、減、乘、除。運算子過載函式作為Complex類的成員函式。編寫程式,分別求兩個複數之和、差、積和商。
#include <iostream> #include <iomanip> using namespace std; class Complex { public: Complex(); Complex(double r
python程式設計分析了一下高考那些事,發現了兩個之最,原來是這樣
Python(發音:英[?pa?θ?n],美[?pa?θɑ:n]),是一種面向物件、直譯式電腦程式語言,也是一種功能強大的通用型語言,已經具有近二十年的發展歷史,成熟且穩定。它包含了一組完善而且容易理解的標準庫,能夠輕鬆完成很多常見的任務。它的語法非常簡捷和清晰,與其它大多數
diffcount統計兩個版本之間程式碼變更行數
使用工具diffcount可以統計一個專案之間兩個版本的程式碼變動量。新版本較老版本有多少新增、修改、刪除、有效程式碼量等。 方法和步驟: 1.解壓diffcount壓縮包,將其放在C盤。 2.在C:\diffcount\diffcount\test下建立兩個資
(c++)寫兩個函式,分別求兩個整數的最大公約數和最小公倍數,用主函式呼叫這兩個函式,並輸出結果兩個整數由鍵盤輸入。
#include<iostream> using namespace std; int max(int a,int b) {if(a<b){int c=a;a=b;b=c;}int
SQL高階語句-BETWEEN 操作符在 WHERE 子句中使用,作用是選取介於兩個值之間的資料範圍。
BETWEEN 操作符例項 如需以字母順序顯示介於 "Adams"(包括)和 "Carter"(不包括)之間的人,請使用下面的 SQL: SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter' 結果集: Id LastNa
兩個線程,交替執行
rac notify zed 等待 main java exc start system import java.util.*; public class Main { static ArrayList<Integer> list=new ArrayL
設計四個線程,當中共兩個線程每次對j添加1,另外兩個線程每次對j降低1。循環100次,寫出程序。
public read 設計 test6 ng- -m popu div for package cn.usst.DataTest6; /** * 設計四個線程,當中共兩個線程每次對j添加1,另外兩個線程每次對j降低1。循環100次,寫出程序。 * @ * *
老男孩教育每日一題-第84天-兩個文件,把第一個文件中的第2、3行內容添加到第二個文件的第3行後面
每日一題兩個文件如下:[[email protected]/* */ ~]# cat 1.txt 111 222 333 [[email protected]/* */ ~]# cat 2.txt AAA bbb ccc ddd要求修改後的文件[[email protect
SDUT 3503 有兩個正整數,求N!的K進制的位數
pos class 進制 amp code cpp ref clu lan 有兩個正整數,求N!的K進制的位數 題目鏈接:action=showproblem&problemid=3503">http://sdutacm.org/sdutoj/prob
Eval的格式,主要看大括號的格式,其他不用那樣寫
alter zone false tip wid item str1 lose names 原文發布時間為:2009-08-26 —— 來源於本人的百度文章 [由搬家工具導入]使用范例:<%#Eva
python 列表復制給另一個列表,改值兩個列表均會改變(備忘)
兩種 另一個 表復制 target tails details 總結 拷貝 get http://blog.csdn.net/lc_lc2000/article/details/53135839 本意是使A = B,B為一個列表,結果在後續對A的操作中,導致B中的值也改變了
版本號帶兩個小數點的,如何比較大小?( NSStringCompareOptions )
microsoft 字符串 turn num 可用 height order mac os integer 例如 1、 NSString *value = @"123AAAAAAA"; [value compare:@"123AAAAAAA"],返回 NSOrder
java打印等腰三角形的兩種方法!(根據行數,根據底邊長度)
triangle class [] 執行 next() result scanner 1-1 next 首先來看根據用戶輸入的底邊的長度判斷: 1 package cn.edu.nwpu.java; 2 3 import java.util.Scanner; 4
sql 中,如何獲取兩個日期之前月數、周數、天數
lvs lar sbo elif bold ss5 getdate 聲明 參數 1、獲取兩個日期之間的月數、周數、天數語法 --1、獲取兩個日期之間的月數、周數、天數 --1.1)聲明參數 declare @startDate varchar(20)
給定a、b兩個文件,各存放50億個url,每個url各占用64字節,內存限制是4G,如何找出a、b文件共同的url?
.... 不同的 來看 相同 兩個文件 oom 兩個 存在 明顯 題目描述:給定a、b兩個文件,各存放50億個url,每個url各占用64字節,內存限制是4G,如何找出a、b文件共同的url? 分析:我們先來看如果要把這些URL全部加載到內存中,需要多大的空間。 1MB
2.5給定兩個用鏈表表示的整數,每個結點包含一個數位。這些數位是反向存放的,也就是個位排在鏈表首部。編寫函數對這兩個整數求和,並用鏈表形式返回結果。
直接 logs next 末尾 做的 nbsp before != 結果 其實仔細想想是挺簡單的,我們要做的只是記得進位。 LinkedListNode addLists(LinkedListNode l1, LinkedListNode l2, int carry) /
【編程題】不引入第三個變量,而交換兩個變量的值
其中 blog b+ 沒有 來源 article else 位移 text 不引入第三個變量,而交換兩個變量的值 方法一:算術運算 1 int a,b; 2 a=10;b=12; 3 a=b-a; //a=2;b=12 4 b=b-a; //a=2;b=10
兩個QWidget疊加,可部分代替layout的功能
tails 定義 qt開發 鏈接 繼承 href 發現 get 開發 在QT開發過程中,有時候會遇到這樣的問題,當我們自己創建了一個Layout對象以後,使用QWidget的setLayout方法,將這個Layout對象應用到窗口中的時候,發現窗口上沒有我們添加的控件,比如
unity 由兩個向量求夾角
light normal 返回 rom 得到 orm 向量 方向 n) 1. float angle = Vector3.Angle (fromVector, toVector); //求出兩向量之間的夾角 Vector3 normal = Vector3.Cross