精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

小議SQL Server主鍵和自動編號問題

運維 數據庫運維 SQL Server
我們在建立數據庫的時候,需要為每張表指定一個主鍵。本文將簡單談談SQL Server中主鍵和自動編號問題,大家多交流討論。

所謂主鍵就是能夠唯一標識表中某一行的屬性或屬性組,一個表只能有一個主鍵,但可以有多個候選索引。因為主鍵可以唯一標識某一行記錄,所以可以確保執行數據更新、刪除的時候不會出現張冠李戴的錯誤。

當然,其它字段可以輔助我們在執行這些操作時消除共享沖突,不過就不在這里討論了。主鍵除了上述作用外,常常與外鍵構成參照完整性約束,防止出現數據不一致。所以數據庫在設計時,主鍵起到了很重要的作用。

常見的數據庫主鍵選取方式有:

◆自動增長字段

◆手動增長字段

◆UniqueIdentifier

◆“COMB(Combine)”類型

一、自動增長型字段

很多數據庫設計者喜歡使用自動增長型字段,因為它使用簡單。自動增長型字段允許我們在向數據庫添加數據時,不考慮主鍵的取值,記錄插入后,數據庫系統會自動為其分配一個值,確保絕對不會出現重復。如果使用SQL Server數據庫的話,我們還可以在記錄插入后使用@@IDENTITY全局變量獲取系統分配的主鍵鍵值。

盡管自動增長型字段會省掉我們很多繁瑣的工作,但使用它也存在潛在的問題,那就是在數據緩沖模式下,很難預先填寫主鍵與外鍵的值。假設有兩張表:

Order(OrderID, OrderDate)

OrderDetial(OrderID, LineNum, ProductID, Price)

Order 表中的OrderID是自動增長型的字段。現在需要我們錄入一張訂單,包括在Order表中插入一條記錄以及在OrderDetail表中插入若干條記錄。因為Order表中的OrderID是自動增長型的字段,那么我們在記錄正式插入到數據庫之前無法事先得知它的取值,只有在更新后才能知道數據庫為它分配的是什么值。這會造成以下矛盾發生:

首先,為了能在 OrderDetail的OrderID字段中添入正確的值,必須先更新Order表以獲取到系統為其分配的OrderID值,然后再用這個 OrderID填充OrderDetail表。最后更新OderDetail表。但是,為了確保數據的一致性,Order與OrderDetail在更新時必須在事務保護下同時進行,即確保兩表同時更行成功。

聽棠.NET指出:主檔放在事務中提交時,通過@@IDENTITY 就可以取到生成值的,因此可以傳給明細當外鍵用,而且在事務發生錯誤回滾時,主檔記錄也會被回滾取消的。

呂震宇補充:使用自動增長字段會增加網絡的roundTrip。盡管可以使用@@IDENTITY取得主鍵的值,但在更新過程中,不得不增加一次數據往返(以C/S結構為例):

1、客戶端發送開始事務命令

2、客戶端提交主表更新

3、服務器返回@@IDENTITY

4、客戶端根據返回的主鍵更新從表緩沖

5、客戶端將從表提交服務器更新

6、客戶端提交事務

在這里多了一次往返就會增加了事務處理的時間。降低并發性能。

如果不用自動增長型字段,將是以下情景:

1、客戶端發送開始事務命令

2、客戶端提交主表更新

3、客戶端提交從表更新

4、客戶端提交事務

因此我不贊成使用自動增長型字段作為主鍵與外鍵鏈接的紐帶。

除此之外,當我們需要在多個數據庫間進行數據的復制時(SQL Server的數據分發、訂閱機制允許我們進行庫間的數據復制操作),自動增長型字段可能造成數據合并時的主鍵沖突。設想一個數據庫中的Order表向另一個庫中的Order表復制數據庫時,OrderID到底該不該自動增長呢?

ADO.NET允許我們在 DataSet中將某一個字段設置為自動增長型字段,但千萬記住,這個自動增長字段僅僅是個占位符而已,當數據庫進行更新時,數據庫生成的值會自動取代 ADO.NET分配的值。所以為了防止用戶產生誤解,建議大家將ADO.NET中的自動增長初始值以及增量都設置成-1。此外,在ADO.NET中,我們可以為兩張表建立DataRelation,這樣存在級聯關系的兩張表更新時,一張表更新后另外一張表對應鍵的值也會自動發生變化,這會大大減少了我們對存在級聯關系的兩表間更新時自動增長型字段帶來的麻煩。

二、手動增長型字段

既然自動增長型字段會帶來如此的麻煩,我們不妨考慮使用手動增長型的字段,也就是說主鍵的值需要自己維護,通常情況下需要建立一張單獨的表存儲當前主鍵鍵值。還用上面的例子來說,這次我們新建一張表叫IntKey,包含兩個字段,KeyName以及KeyValue。就像一個HashTable,給一個 KeyName,就可以知道目前的KeyValue是什么,然后手工實現鍵值數據遞增。在SQL Server中可以編寫這樣一個存儲過程,讓取鍵值的過程自動進行。代碼如下:

CREATE PROCEDURE [GetKey]

@KeyName char(10),
@KeyValue int OUTPUT

AS
UPDATE IntKey SET @KeyValue = KeyValue = KeyValue + 1 WHERE KeyName = @KeyName
GO

這樣,通過調用存儲過程,我們可以獲得最新鍵值,確保不會出現重復。若將OrderID字段設置為手動增長型字段,我們的程序可以由以下幾步來實現:首先調用存儲過程,獲得一個OrderID,然后使用這個OrderID填充Order表與OrderDetail表,最后在事務保護下對兩表進行更新。

使用手動增長型字段作為主鍵在進行數據庫間數據復制時,可以確保數據合并過程中不會出現鍵值沖突,只要我們為不同的數據庫分配不同的主鍵取值段就行了。但是,使用手動增長型字段會增加網絡的RoundTrip,我們必須通過增加一次數據庫訪問來獲取當前主鍵鍵值,這會增加網絡和數據庫的負載,當處于一個低速或斷開的網絡環境中時,這種做法會有很大的弊端。同時,手工維護主鍵還要考慮并發沖突等種種因素,這更會增加系統的復雜程度。

三、使用UniqueIdentifier

SQL Server為我們提供了UniqueIdentifier數據類型,并提供了一個生成函數NEWID( ),使用NEWID( )可以生成一個唯一的UniqueIdentifier。UniqueIdentifier在數據庫中占用16個字節,出現重復的概率非常小,以至于可以認為是0。我們經常從注冊表中看到類似{45F0EB02-0727-4F2E-AAB5-E8AEDEE0CEC5}的東西實際上就是一個UniqueIdentifier,Windows用它來做COM組件以及接口的標識,防止出現重復。在.NET里管UniqueIdentifier稱之為GUID(Global Unique Identifier)。在C#中可以使用如下命令生成一個GUID:

Guid u = System.Guid.NewGuid(); 

對于上面提到的Order與OrderDetail的程序,如果選用UniqueIdentifier作為主鍵的話,我們完全可以避免上面提到的增加網絡 RoundTrip的問題。通過程序直接生成GUID填充主鍵,不用考慮是否會出現重復。

UniqueIdentifier 字段也存在嚴重的缺陷:首先,它的長度是16字節,是整數的4倍長,會占用大量存儲空間。更為嚴重的是,UniqueIdentifier的生成毫無規律可言,要想在上面建立索引(絕大多數數據庫在主鍵上都有索引)是一個非常耗時的操作。有人做過實驗,插入同樣的數據量,使用 UniqueIdentifier型數據做主鍵要比使用Integer型數據慢,所以,出于效率考慮,盡可能避免使用UniqueIdentifier型數據庫作為主鍵鍵值。

四、使用“COMB(Combine)”類型

既然上面三種主鍵類型選取策略都存在各自的缺點,那么到底有沒有好的辦法加以解決呢?答案是肯定的。通過使用COMB類型(數據庫中沒有COMB類型,它是Jimmy Nilsson在他的“The Cost of GUIDs as Primary Keys”一文中設計出來的),可以在三者之間找到一個很好的平衡點。

COMB 數據類型的基本設計思路是這樣的:既然UniqueIdentifier數據因毫無規律可言造成索引效率低下,影響了系統的性能,那么我們能不能通過組合的方式,保留UniqueIdentifier的前10個字節,用后6個字節表示GUID生成的時間(DateTime),這樣我們將時間信息與 UniqueIdentifier組合起來,在保留UniqueIdentifier的唯一性的同時增加了有序性,以此來提高索引效率。也許有人會擔心 UniqueIdentifier減少到10字節會造成數據出現重復,其實不用擔心,后6字節的時間精度可以達到1/300秒,兩個COMB類型數據完全相同的可能性是在這1/300秒內生成的兩個GUID前10個字節完全相同,這幾乎是不可能的!在SQL Server中用SQL命令將這一思路實現出來便是:

DECLARE @aGuid UNIQUEIDENTIFIER

SET @aGuid = CAST(CAST(NEWID() AS BINARY(10))
+ CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER)

經過測試,使用COMB做主鍵比使用INT做主鍵,在檢索、插入、更新、刪除等操作上仍然顯慢,但比Unidentifier類型要快上一些。關于測試數據可以參考我2004年7月21日的隨筆。

除了使用存儲過程實現COMB數據外,我們也可以使用C#生成COMB數據,這樣所有主鍵生成工作可以在客戶端完成。C#代碼如下:

//================================================================ 
/**////
/// 返回 GUID 用于數據庫操作,特定的時間代碼可以提高檢索效率
///
/// COMB (GUID 與時間混合型) 類型 GUID 數據
public static Guid NewComb()
{
byte[] guidArray = System.Guid.NewGuid().ToByteArray();
DateTime baseDate = new DateTime(1900,1,1);
DateTime now = DateTime.Now;
// Get the days and milliseconds which will be used to build the byte string
TimeSpan days = new TimeSpan(now.Ticks - baseDate.Ticks);
TimeSpan msecs = new TimeSpan(now.Ticks - (new DateTime(now.Year, now.Month, now.Day).Ticks));

// Convert to a byte array
// Note that SQL Server is accurate to 1/300th of a millisecond so we divide by 3.333333
byte[] daysArray = BitConverter.GetBytes(days.Days);
byte[] msecsArray = BitConverter.GetBytes((long)(msecs.TotalMilliseconds/3.333333));

// Reverse the bytes to match SQL Servers ordering
Array.Reverse(daysArray);
Array.Reverse(msecsArray);

// Copy the bytes into the guid
Array.Copy(daysArray, daysArray.Length - 2, guidArray, guidArray.Length - 6, 2);
Array.Copy(msecsArray, msecsArray.Length - 4, guidArray, guidArray.Length - 4, 4);

return new System.Guid(guidArray);
}

//================================================================
/**////
/// 從 SQL SERVER 返回的 GUID 中生成時間信息
///
///

包含時間信息的 COMB
/// 時間
public static DateTime GetDateFromComb(System.Guid guid)
{
DateTime baseDate = new DateTime(1900,1,1);
byte[] daysArray = new byte[4];
byte[] msecsArray = new byte[4];
byte[] guidArray = guid.ToByteArray();

// Copy the date parts of the guid to the respective byte arrays.
Array.Copy(guidArray, guidArray.Length - 6, daysArray, 2, 2);
Array.Copy(guidArray, guidArray.Length - 4, msecsArray, 0, 4);

// Reverse the arrays to put them into the appropriate order
Array.Reverse(daysArray);
Array.Reverse(msecsArray);

// Convert the bytes to ints
int days = BitConverter.ToInt32(daysArray, 0);
int msecs = BitConverter.ToInt32(msecsArray, 0);

DateTime date = baseDate.AddDays(days);
date = date.AddMilliseconds(msecs * 3.333333);

return date;
}

結語

數據庫主鍵在數據庫中占有重要地位。主鍵的選取策略決定了系統是否高效、易用。本文比較了四種主鍵選取策略的優缺點,并提供了相應的代碼解決方案,希望對大家有所幫助。

【編輯推薦】

  1. SQL Server通過代碼執行代理任務
  2. SQL Server即將提升實時數據功能
  3. SQL Server置疑數據庫解決方法
責任編輯:彭凡 來源: 網易博客
相關推薦

2010-09-25 10:05:25

sql server主

2011-08-25 15:40:48

SQL Server 自動編號字段Access

2011-04-02 12:55:20

SQL Server

2011-04-13 14:20:52

SQL Server主鍵

2010-07-05 11:32:23

SQL Server自

2010-09-01 16:44:26

SQL刪除主鍵

2011-08-25 13:10:44

SQL Server 設置自動編號字段

2011-05-12 13:34:57

SQL Server

2010-10-19 17:21:35

SQL SERVER主

2010-10-21 14:54:32

查詢SQL Serve

2010-10-20 10:19:33

sql server刪

2010-10-20 10:31:57

sql server聯

2011-07-25 18:11:47

SQL Server數復合主鍵

2010-10-19 17:34:10

sql server主

2010-07-05 15:12:30

SQL Server主

2010-09-25 09:45:46

sql server主

2010-09-25 09:34:05

sql server主

2010-09-25 10:41:34

SQL SERVER主

2010-09-25 09:18:45

sql server主

2010-09-25 09:55:14

sql server主
點贊
收藏

51CTO技術棧公眾號

欧美啪啪网站| 国模吧精品人体gogo| 欧美日本三区| 亚洲精品狠狠操| 一道本视频在线观看| 菠萝菠萝蜜在线视频免费观看| 懂色av一区二区三区免费看| 国产91色在线免费| 欧美日韩在线国产| 精品精品久久| 亚洲电影免费观看高清| 色哟哟精品视频| 黑人极品ⅴideos精品欧美棵| 久久久久久9999| 成人午夜电影在线播放| 亚洲视频一二三四| 久久免费电影| 中文字幕的久久| 国产乱码一区| 国产精品伦一区二区三区| 在线成人h网| 日韩在线免费高清视频| 欧美熟妇精品一区二区蜜桃视频| 成人性片免费| 欧美小视频在线| 干日本少妇视频| 成年人在线看| 91玉足脚交白嫩脚丫在线播放| 国产一区二区视频在线观看| 国产无遮挡又黄又爽| 欧美疯狂party性派对| 日韩av在线不卡| 日本特黄在线观看| 精品美女一区| 色婷婷久久综合| 国产女主播自拍| 国产在线高清视频| 国产精品亲子伦对白| 久久综合九色综合久99| 精品人妻一区二区三区蜜桃 | 亚洲午夜精品久久久久久性色 | 国产精品一区二区美女视频免费看 | 亚洲激情自拍图| 一级片黄色免费| 欧美一级做一级爱a做片性| 色婷婷综合久久| 日韩激情免费视频| 黄色污网站在线观看| 一区二区三区**美女毛片| 亚洲日本精品一区| av网站在线免费观看| 97久久精品人人做人人爽50路| 91色琪琪电影亚洲精品久久| 中文字幕在线播出| 免费精品视频最新在线| 日韩女在线观看| 日韩视频在线观看一区| 在线视频亚洲| 日本精品在线视频 | 亚洲中午字幕| 欧美一级视频免费在线观看| 日本a在线观看| 精品二区久久| 97在线观看视频国产| 国产91av视频| 欧美专区一区二区三区| 欧美亚洲国产日韩2020| 国产小视频在线免费观看| 国产欧美另类| 国产精品777| 在线视频免费观看一区| 国产一区欧美一区| 5566中文字幕一区二区| 黄色小视频免费观看| aaa亚洲精品| 久久99精品久久久久久久青青日本 | 一级片中文字幕| 性一交一乱一区二区洋洋av| 日本欧美一级片| 中国女人一级一次看片| 国产又黄又大久久| 97久久精品午夜一区二区| 刘玥91精选国产在线观看| 99精品视频在线播放观看| 欧美一区1区三区3区公司| jizz在线观看视频| 亚洲男帅同性gay1069| 成人在线国产视频| 欧美黄色网页| 日韩欧美一二三区| 一区二区视频观看| 精品不卡一区| 欧美另类老女人| 久久午夜免费视频| 日本视频一区二区| av在线不卡一区| 免费a在线观看| 亚洲日本护士毛茸茸| 日韩一区二区高清视频| 国产免费拔擦拔擦8x高清在线人| 色婷婷久久久综合中文字幕| 国产永久免费网站| 欧美一级色片| 俺去啦;欧美日韩| 久久精品免费在线| 丝袜美腿亚洲一区| 成人欧美一区二区三区视频xxx| 青春有你2免费观看完整版在线播放高清| 欧美国产成人精品| 69sex久久精品国产麻豆| 高清电影一区| 精品福利av导航| 亚洲欧美va天堂人熟伦| 欧美精品91| 国产精品爽爽ⅴa在线观看| 欧美 日韩 中文字幕| 中文一区一区三区高中清不卡| 久艹在线免费观看| 日韩亚洲国产免费| 亚洲午夜精品久久久久久性色| 久久久香蕉视频| 久久99精品网久久| 久久久久久艹| 123区在线| 欧美中文字幕一二三区视频| www.色.com| 日韩欧美1区| 欧美在线视频一区| 欧美一区二不卡视频| 亚洲欧美成人一区二区三区| 国产成人av影视| 欧美顶级毛片在线播放| 欧美激情视频一区| 国产精品视频一区二区三区,| 久久久精品人体av艺术| 一二三四视频社区在线| 一区二区三区视频播放| 日韩在线视频观看| 国产一级片免费视频| 97se狠狠狠综合亚洲狠狠| 91传媒免费视频| www.成人| 久久精品成人欧美大片| 中文字幕永久在线观看| 国产日韩欧美激情| 99精品免费在线观看| 久久夜色精品国产噜噜av小说| 中文字幕亚洲视频| 精品一卡二卡三卡| 要久久电视剧全集免费| 4438全国成人免费| 性xxxx18| 欧美日韩在线一区| 最新中文字幕视频| 鲁大师影院一区二区三区| 久久精品一二三区| 天天综合av| 亚洲女人初尝黑人巨大| 亚洲免费黄色网址| 久久精品人人做人人综合 | 色999日韩自偷自拍美女| 欧美一级大片| 尤物yw午夜国产精品视频| 欧美视频xxxx| 国产精品久久精品日日| 老司机久久精品| 这里只有精品在线| 高清不卡日本v二区在线| 久久不射影院| 日韩精品免费视频| 精品成人av一区二区在线播放| 91在线国产福利| 超碰97人人射妻| 成人国产精品一级毛片视频| 国产欧美精品一区二区三区介绍| 久久综合网导航| 亚洲电影av在线| 国产第一页在线观看| 国产精品美女一区二区在线观看| 日韩成人av免费| 国内精品久久久久久久97牛牛 | 国产亚洲一卡2卡3卡4卡新区 | 97视频在线免费观看| 国产主播福利在线| 欧美男男青年gay1069videost| 极品魔鬼身材女神啪啪精品| 99在线视频精品| 亚洲一区二区三区四区五区xx| 午夜激情久久| 国产有色视频色综合| 345成人影院| 久久精品美女视频网站| 黄色a在线观看| 欧美在线观看你懂的| 国产免费无码一区二区视频| 91亚洲精品乱码久久久久久蜜桃 | 国产精品久久成人免费观看| 澳门成人av| 国产美女高潮久久白浆| 国产精品蜜臀| 日韩网站免费观看高清| 午夜性色福利影院| 欧美一级片免费看| 波多野结衣网站| 亚洲国产美国国产综合一区二区| 人妻精品久久久久中文| 成人小视频在线| 依人在线免费视频| 亚洲免费在线| 红桃一区二区三区| 日韩精品免费| 久久久神马电影| 日本99精品| 国产精品青草久久久久福利99| 国产探花视频在线观看| 日韩在线视频免费观看高清中文| 婷婷开心激情网| 日韩一区二区在线免费观看| 天堂av免费在线观看| 五月婷婷久久综合| 黄色在线观看免费| 中文字幕制服丝袜一区二区三区 | 国产精品福利一区二区三区| 狠狠人妻久久久久久综合蜜桃| 韩日欧美一区二区三区| 好男人www社区| 亚洲黄网站黄| 国产精品久久久久久久久电影网| 欧美亚洲在线日韩| 免费成人看片网址| 久久夜色精品国产噜噜av小说| 51成人做爰www免费看网站| 国产精品麻豆成人av电影艾秋| 欧美性一区二区三区| 超级白嫩亚洲国产第一| 欧美激情a在线| 麻豆av在线导航| 日韩在线观看你懂的| 国产高清一级毛片在线不卡| 亚洲精品视频二区| 污视频网站免费观看| 亚洲国产精品国自产拍av秋霞| 亚洲AV无码一区二区三区性| 欧美高清视频不卡网| 91免费视频播放| 欧美久久久久久久久| 中文字字幕在线中文乱码| 欧洲生活片亚洲生活在线观看| 中文在线第一页| 日本乱码高清不卡字幕| 丰满人妻老熟妇伦人精品| 欧美性生活大片免费观看网址| 日韩精品无码一区二区| 亚洲成av人片在www色猫咪| 国产精品自拍视频一区| 亚洲第一成年网| 久久国产黄色片| 色综合天天视频在线观看| 久久永久免费视频| 欧美在线啊v一区| 国产精品一级视频| 日韩一区二区麻豆国产| 亚洲成人久久精品| 亚洲韩国青草视频| 久久电影中文字幕| 少妇高潮 亚洲精品| 国产一二区在线观看| 色综合久久精品亚洲国产| 欧美黄色视屏| 51精品在线观看| 怡红院成人在线| 91精品美女在线| 伊人久久影院| 精品一区2区三区| 国产影视一区| 天天操天天干天天玩| 激情久久五月| 日日碰狠狠躁久久躁婷婷| 麻豆91精品视频| 国产精品成人免费一区久久羞羞| av一二三不卡影片| 国产探花视频在线播放| 亚洲精品videosex极品| 日韩av电影网址| 欧美视频一区二| 亚洲精品国产av| 亚洲欧洲午夜一线一品| 毛片激情在线观看| 午夜免费在线观看精品视频| 亚洲欧美在线成人| 51国产成人精品午夜福中文下载 | 岛国精品在线观看| 美女100%无挡| 亚洲另类在线制服丝袜| 精品成人av一区二区在线播放| 欧美视频在线播放| 日本人妻丰满熟妇久久久久久| 尤物yw午夜国产精品视频| 美女精品视频| 国产美女精品视频免费观看| 国产精品x8x8一区二区| 亚洲 国产 欧美一区| 亚洲经典三级| 亚洲无在线观看| 久久夜色精品国产噜噜av| 婷婷激情四射网| 色视频欧美一区二区三区| 精品人妻aV中文字幕乱码色欲 | 国产日韩精品中文字无码| 亚洲大片精品永久免费| 国产精品高潮呻吟久久久| 精品亚洲国产视频| 宅男网站在线免费观看| 日本一本a高清免费不卡| 日韩区欧美区| 亚洲欧美日韩在线综合| 美女国产精品| 好男人香蕉影院| 亚洲另类在线一区| 中文字幕在线观看1| 亚洲欧美日韩成人| 久久男人av资源站| 91九色视频在线观看| 久久久影院免费| 99视频免费播放| 99re亚洲国产精品| 久久免费精彩视频| 欧美一区二区三区四区久久 | 亚洲人妖av一区二区| 久久这里只有精品9| 亚洲欧美日韩网| 欧美另类老肥妇| 精品欧美国产| 伊人久久亚洲影院| 农村末发育av片一区二区| 综合自拍亚洲综合图不卡区| 中文字幕视频在线播放| 国产亚洲美女久久| 色香欲www7777综合网| 欧美区高清在线| 亚洲女同同性videoxma| a级一a一级在线观看| 亚洲一区二区三区影院| 亚洲爱情岛论坛永久| 欧美日韩成人黄色| 亚洲不卡视频| 日韩欧美一级在线| 国产激情91久久精品导航| 免费高清在线观看电视| 欧美一卡二卡在线观看| a免费在线观看| 91中文字幕在线| 欧美一区高清| 欧美日韩人妻精品一区在线| 亚洲午夜av在线| 无码精品视频一区二区三区| 97精品免费视频| 色天天色综合| 熟女人妇 成熟妇女系列视频| 久久久精品影视| 亚洲视频在线观看免费视频| 日韩中文在线不卡| 欧美h版在线观看| 亚洲精品久久久久久久蜜桃臀| k8久久久一区二区三区 | 欧美亚洲图片小说| 中文字幕日本在线| 亚洲a成v人在线观看| 黄色日韩在线| 国产传媒第一页| 欧美视频在线一区二区三区 | 天天综合网在线| 国产精品99久久99久久久二8| 久久亚洲国产| 美女露出粉嫩尿囗让男人桶| 香港成人在线视频| 蜜桃视频在线免费| 成人性生交大片免费观看嘿嘿视频| 亚洲欧美日韩高清在线| 欧美激情 亚洲| 欧美在线一二三四区| 黄色网在线播放| 久草精品电影| 国产一区二区在线影院| 免费看日韩毛片| 日韩视频精品在线| 另类尿喷潮videofree| av污在线观看| 亚洲成人777| 午夜激情在线观看| 久久国产欧美精品| 国产麻豆视频精品| 五月婷婷激情视频| 欧美第一黄色网| 日韩av有码| 中文字幕一区二区久久人妻网站 | 国产91精品在线播放| 欧美在线高清| 在线免费观看视频| 日韩精品小视频|