国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

數據庫主鍵int型和str型效率比較

2024-07-21 02:06:01
字體:
來源:轉載
供稿:網友

又看到這樣的一段話:

主鍵用整型會極大的提高查詢效率,而字符型的比較開銷要比整型的比較開銷大很多,用字符型數據作主鍵會使數據插入、更新與查詢的效率降低。數據量小的時候這點降低可能不會被注意,可是當數據量大的時候,小的改進也能夠提高系統的響應速度。

我做了一個實驗,用mssql企業管理器建立兩張表tint和tstr,
tint
{
 intid  int  primary key
 intvalue  int
}
tstr
{
 strid  varchar(20)  primary key
 strvalue  varchar(20)
}
往這兩張表數據分別為intid = intvalue = 1 ~ 300000,strid = strvalue = '1' ~ '300000'。然后用mfc封裝的odbc分別執行
intrslt.open(crecordset::dynaset,"select * from tint where intid = 123456",crecordset::readonly);

strrslt.open(crecordset::dynaset,"select * from tstr where strid = '123456'",crecordset::readonly);
一千次。
時間分別是1392毫秒和1452毫秒

同樣執行
intrslt.open(crecordset::dynaset,"select * from tint where intvalue = 123456",crecordset::readonly);

strrslt.open(crecordset::dynaset,"select * from tstr where strvalue = '123456'",crecordset::readonly);
一千次。
時間分別是58955毫秒和172227毫秒

如果用ms sqlserver新建一個主鍵(primary key),sqlserver默認為它建立一個聚集(clustered)索引,用聚集索引來定位一個數據需要的比較次數應該是很少的。而插入或者更新操作可能導致整行移動大量數據,但這對于int型和str型主鍵是一樣的。

為什么作者會如是說呢?現在我并不認為把str型主鍵改成int型是提高數據庫效率的關鍵,相比使用數據庫連接池或者優化sql語句,這點效率微不足道。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 芦山县| 棋牌| 玉田县| 阜宁县| 南通市| 思南县| 柯坪县| 盱眙县| 弥勒县| 湟源县| 河津市| 新巴尔虎右旗| 信宜市| 京山县| 尖扎县| 黄龙县| 高青县| 大邑县| 郸城县| 平安县| 柏乡县| 获嘉县| 米泉市| 若尔盖县| 河曲县| 郯城县| 蒲城县| 三原县| 岳池县| 宣威市| 郴州市| 甘洛县| 梅州市| 荣昌县| 老河口市| 交城县| 广德县| 紫金县| 滕州市| 榆树市| 鄂伦春自治旗|