SQLServer之創建唯一非聚集索引

来源:https://www.cnblogs.com/vuenote/archive/2018/09/19/9673357.html
-Advertisement-
Play Games

創建唯一非聚集索引典型實現 唯一索引可通過以下方式實現: PRIMARY KEY 或 UNIQUE 約束 在創建 PRIMARY KEY 約束時,如果不存在該表的聚集索引且未指定唯一非聚集索引,則將自動對一列或多列創建唯一聚集索引。 主鍵列不允許空值。 在創建 UNIQUE 約束時,預設情況下將創建 ...


創建唯一非聚集索引典型實現

唯一索引可通過以下方式實現:

  • PRIMARY KEY 或 UNIQUE 約束

    在創建 PRIMARY KEY 約束時,如果不存在該表的聚集索引且未指定唯一非聚集索引,則將自動對一列或多列創建唯一聚集索引。 主鍵列不允許空值。

    在創建 UNIQUE 約束時,預設情況下將創建唯一非聚集索引,以便強制 UNIQUE 約束。 如果不存在該表的聚集索引,則可以指定唯一聚集索引。

    有關詳細信息,請參閱 Unique Constraints and Check Constraints 和 Primary and Foreign Key Constraints

  • 獨立於約束的索引

    可以為一個表定義多個唯一非聚集索引。

    有關詳細信息,請參閱 CREATE INDEX (Transact-SQL)

  • 索引視圖

    若要創建索引視圖,請對一個或多個視圖列定義唯一聚集索引。 視圖將執行,並且結果集存儲在該索引的頁級別中,其存儲方式與表數據存儲在聚集索引中的方式相同。 有關詳細信息,請參閱 創建索引視圖

創建唯一非聚集索引限制和局限

  • 如果數據中存在重覆的鍵值,則不能創建唯一索引、UNIQUE 約束或 PRIMARY KEY 約束。

  • 唯一非聚集索引可以包括包含性非鍵列。 有關詳細信息,請參閱 Create Indexes with Included Columns

使用SSMS資料庫管理工具創建唯一非聚集索引

使用表設計器創建唯一非聚集索引

1、連接資料庫,選擇資料庫,選擇數據表-》右鍵點擊-》選擇設計。

2、在表設計器視窗-》選擇要添加索引的屬性列-》右鍵點擊-》選擇索引/鍵。

3、在索引/鍵彈出框-》點擊添加,添加索引-》在常規視窗類型選擇索引-》點擊列選擇數據列。

4、在索引列彈出框-》點擊添加索引列-》點擊選擇索引列排序規則-》可以把一個索引建立在多個數據列上-》點擊確定。

5、在索引/鍵彈出框-》選擇創建唯一索引-》輸入索引名稱-》輸入索引描述-》選擇創建為非聚集索引-》其它可以選擇預設-》點擊關閉。

6、點擊保存(或者ctrl+s)-》關閉表設計器-》刷新表-》查看結果。

使用對象資源管理器創建唯一索引

1、連接資料庫,選擇資料庫,選擇數據表-》展開對象資源管理器-》右鍵點擊索引-》選擇新建索引-》選擇非聚集索引。

2、在新建索引彈出框-》輸入索引名稱-》選擇創建為唯一索引-》點擊添加,選擇索引數據列。

3、在數據表列-》選擇索引要添加的數據列,可以選擇多個-》點擊確定。

4、在新建索引視窗-》點擊包含性列-》點擊添加。

5、在數據表列-》點擊選擇包含性列,可以選擇多個-》點擊確定。

6、在新建索引視窗-》點擊選項-》可以自己設置索引屬性。

7、在新建索引彈出框-》點擊存儲-》設置索引和數據存儲規則。

 8、在新建索引彈出框-》點擊篩選器-》輸入篩選規則。

9、在新建索引彈出框-》點擊擴展屬性-》輸入擴展屬性名稱-》輸入擴展屬性名稱-》可以輸入多個擴展屬性-》點擊確定。

10、查看創建結果。

使用T-SQL腳本創建唯一非聚集索引

語法:

--聲明資料庫引用
use 資料庫名;
go

--判斷索引是否存在
if exists(select * from sysindexes where name=索引名)
drop index 索引名 on 表名 with (online=off);
go

--添加索引
create 
--[unique] --指定聚集索引是否唯一
[clustered | nonclustered]  --指定為聚集索引
index 索引名稱 --索引名稱
on 表名  --索引添加在哪個表
(列名 [asc | desc],列名 [asc | desc],...) --索引添加在哪個數據列

--可以通過將非鍵列添加到非聚集索引的葉級別來擴展非聚集索引的功能。通過包含非鍵列,可以創建覆蓋更多查詢的非聚集索引。這是因為非鍵列具有下列優點:

--1、它們可以是不允許作為索引鍵列的數據類型。
--2、在計算索引鍵列數或索引鍵大小時,資料庫引擎不考慮它們。
--當查詢中的所有列都作為鍵列或非鍵列包含在索引中時,帶有包含性非鍵列的索引可以顯著提高查詢性能。
--這樣可以實現性能提升,因為查詢優化器可以在索引中找到所有列值;不訪問表或聚集索引數據,從而減少磁碟 I/O 操作。
include(列名,......)

where (篩選表達式) --篩選表達式

with(

--pad_index:指定索引填充
--pad_index=on:FILLFACTOR 指定的可用空間百分比應用於索引的中間級頁。
--pad_index=off或未指定 fillfactor:考慮到中間級頁上的鍵集,可以將中間級頁幾乎填滿,但至少要為最大索引行留出足夠空間。
pad_index={ on | off },

--statistics_norecompute:指定是否重新計算統計信息。
--statistics_norecompute=on:過時的統計信息不會自動重新計算。
--statistics_norecompute=off:啟用自動統計信息更新。
statistics_norecompute={ on | off },

--sort_in_tempdb:指定是否將排序結果存儲在 tempdb 中。
--sort_in_tempdb=on:在tempdb中存儲用於生成索引的中間排序結果。如果tempdb與用戶資料庫不在同一組磁碟上,就可縮短創建索引所需的時間。但是,這會增加索引生成期間所使用的磁碟空間量。
--sort_in_tempdb=off:中間排序結果與索引存儲在同一資料庫中。
sort_in_tempdb={ on | off },

--ignore_dup_key:指定在插入操作嘗試向唯一索引插入重覆鍵值時的響應類型。 IGNORE_DUP_KEY 選項僅適用於創建或重新生成索引後發生的插入操作。 當執行 CREATE INDEX、ALTER INDEX 或 UPDATE 時,該選項無效。 預設為 OFF。
--ignore_dup_key=on:打開,將重覆鍵值插入唯一索引時會出現警告消息。只有違反唯一性的行為才會失敗。
--ignore_dup_key=off:關閉,將重覆鍵值插入唯一索引時會出現錯誤消息。回滾整個INSERT操作。對於對視圖創建的索引、非唯一索引、XML 索引、空間索引以及篩選的索引,IGNORE_DUP_KEY 不能設置為 ON
ignore_dup_key={ on | off },

--drop_existing:表示如果這個索引還在表上就 drop 掉然後在 create 一個新的。 預設為 OFF。
--drop_existing=on:指定要刪除並重新生成現有索引,其必須具有相同名稱作為參數 index_name。
--drop_existing=off:指定不刪除和重新生成現有的索引。 如果指定的索引名稱已經存在,SQL Server 將顯示一個錯誤。
drop_existing={ on | off },

--online:指定在索引操作期間基礎表和關聯的索引是否可用於查詢和數據修改操作。 預設為 OFF。 REBUILD 可作為 ONLINE 操作執行。
--online=on:在索引操作期間不持有長期表鎖。 在索引操作的主要階段,源表上只使用意向共用 (IS) 鎖。 
--這使得能夠繼續對基礎表和索引進行查詢或更新。 
--操作開始時,在很短的時間內對源對象持有共用 (S) 鎖。
--操作結束時,如果創建非聚集索引,將在短期內獲取對源的 S(共用)鎖;
--當聯機創建或刪除聚集索引時,以及重新生成聚集或非聚集索引時,將在短期內獲取 SCH-M(架構修改)鎖。 但聯機索引鎖是短的元數據鎖,特別是 Sch-M 鎖必須等待此表上的所有阻塞事務完成。 
--在等待期間,Sch-M 鎖在訪問同一表時阻止在此鎖後等待的所有其他事務。 對本地臨時表創建索引時,ONLINE 不能設置為 ON。
--online=off:在索引操作期間應用表鎖。這樣可以防止所有用戶在操作期間訪問基礎表。
--創建、重新生成或刪除聚集索引或者重新生成或刪除非聚集索引的離線索引操作將對錶獲取架構修改 (Sch-M) 鎖。 
--這樣可以防止所有用戶在操作期間訪問基礎表。 創建非聚集索引的離線索引操作將對錶獲取共用 (S) 鎖。 這樣可以防止更新基礎表,但允許讀操作(如 SELECT 語句)。
online={ on | off },

--aloow_row_locks:指定是否允許行鎖。
--allow_row_locks=on:訪問索引時允許行鎖。資料庫引擎確定何時使用行鎖。
--allow_row_locks=off:不使用行鎖。
allow_row_locks={ on | off }, 

--allow_page_locks:指定是否允許使用頁鎖。
--allow_page_locks=on:訪問索引時允許頁鎖。資料庫引擎確定何時使用頁鎖。
-- allow_page_locks=off:不使用頁鎖。
allow_page_locks={ on | off },

--fillfactor=n:指定一個百分比,指示在資料庫引擎創建或修改索引的過程中,應將每個索引頁面的葉級填充到什麼程度。 指定的值必須是 1 到 100 之間的整數。 預設值為 0。
fillfactor=n

--maxdop=max_degree_of_parallelism:在索引操作期間替代 max degree of parallelism 配置選項。 有關詳細信息,請參閱 配置 max degree of parallelism 伺服器配置選項。 使用 MAXDOP 可以限制在執行並行計劃的過程中使用的處理器數量。 最大數量為 64 個處理器。
--max_degree_of_parallelism 可以是:
--1 - 取消生成並行計劃。
-->1 - 將並行索引操作中使用的最大處理器數量限製為指定數量。
--0(預設值)- 根據當前系統工作負荷使用實際數量的處理器或更少數量的處理器。
--有關詳細信息,請參閱 配置並行索引操作。
--maxdop=max_degree_of_parallelism,

--data_compression=row:為指定的表、分區號或分區範圍指定數據壓縮選項。 選項如下所示:
--none
--不壓縮表或指定的分區。 僅適用於行存儲表;不適用於列存儲表。
--row
--使用行壓縮來壓縮表或指定的分區。 僅適用於行存儲表;不適用於列存儲表。
--page
--使用頁壓縮來壓縮表或指定的分區。 僅適用於行存儲表;不適用於列存儲表。
--columnstore
--適用範圍: SQL Server 2014 (12.x) 到 SQL Server 2017。
--僅適用於列存儲表。 COLUMNSTORE 指定對使用 COLUMNSTORE_ARCHIVE 選項壓縮的分區進行解壓縮。 還原數據時,將繼續通過用於所有列存儲表的列存儲壓縮對 COLUMNSTORE 索引進行壓縮。
--columnstore_archive
--適用範圍: SQL Server 2014 (12.x) 到 SQL Server 2017。
--僅適用於列存儲表,這是使用聚集列存儲索引存儲的表。 COLUMNSTORE_ARCHIVE 會進一步將指定分區壓縮到更小。 這可用於存檔,或者用於要求更少存儲並且可以付出更多時間來進行存儲和檢索的其他情形
--data_compression={ none | row | page | columnstore | columnstore_archive }

--on partitions ( { <partition_number_expression> | <range> } [ ,...n ] ) 適用範圍: SQL Server 2008 到 SQL Server 2017。
--指定對其應用 DATA_COMPRESSION 設置的分區。 如果表未分區,ON PARTITIONS 參數將生成錯誤。 如果不提供 ON PARTITIONS 子句,DATA_COMPRESSION 選項將應用於已分區表的所有分區。
--可以按以下方式指定 <partition_number_expression>:
--提供一個分區號,例如:ON PARTITIONS (2)。
--提供若幹單獨分區的分區號並用逗號將它們隔開,例如:ON PARTITIONS (1, 5)。
--同時提供範圍和單個分區,例如:ON PARTITIONS (2, 4, 6 TO 8)。
--<range> 可以指定為以單詞 TO 隔開的分區號,例如:ON PARTITIONS (6 TO 8)。
--,請多次指定 DATA_COMPRESSION 選項 
--on partitions(1-2)

)
on [primary];--數據空間規範
go

--添加註釋
execute sp_addextendedproperty N'MS_Description',N'索引說明',N'schema',N'dbo',N'table',N'表名',N'index',N'索引名稱';
go

示例:

--聲明資料庫應用
use testss;
go

--判斷是否存在索引
if exists(select * from sysindexes where name='uniquenonclus1')
drop index uniquenonclus1 on test1 with(online=off);
go

create
unique --唯一
nonclustered --非聚集索引
index --索引關鍵字
uniquenonclus1 --索引名稱
on test1 --索引建立在哪張表
(name asc) --索引建立在哪個數據列
--可以通過將非鍵列添加到非聚集索引的葉級別來擴展非聚集索引的功能。通過包含非鍵列,可以創建覆蓋更多查詢的非聚集索引。這是因為非鍵列具有下列優點:
--1、它們可以是不允許作為索引鍵列的數據類型。
--2、在計算索引鍵列數或索引鍵大小時,資料庫引擎不考慮它們。
--當查詢中的所有列都作為鍵列或非鍵列包含在索引中時,帶有包含性非鍵列的索引可以顯著提高查詢性能。
--這樣可以實現性能提升,因為查詢優化器可以在索引中找到所有列值;不訪問表或聚集索引數據,從而減少磁碟 I/O 操作。
include(sex)
where (name is null) --篩選表達式
with(

--pad_index:指定索引填充
--pad_index=on:FILLFACTOR 指定的可用空間百分比應用於索引的中間級頁。
--pad_index=off或未指定 fillfactor:考慮到中間級頁上的鍵集,可以將中間級頁幾乎填滿,但至少要為最大索引行留出足夠空間。
pad_index=on,

--statistics_norecompute:指定是否重新計算統計信息。
--statistics_norecompute=on:過時的統計信息不會自動重新計算。
--statistics_norecompute=off:啟用自動統計信息更新。
statistics_norecompute=on,

--sort_in_tempdb:指定是否將排序結果存儲在 tempdb 中。
--sort_in_tempdb=on:在tempdb中存儲用於生成索引的中間排序結果。如果tempdb與用戶資料庫不在同一組磁碟上,就可縮短創建索引所需的時間。但是,這會增加索引生成期間所使用的磁碟空間量。
--sort_in_tempdb=off:中間排序結果與索引存儲在同一資料庫中。
sort_in_tempdb=off,

--ignore_dup_key:指定在插入操作嘗試向唯一索引插入重覆鍵值時的響應類型。 IGNORE_DUP_KEY 選項僅適用於創建或重新生成索引後發生的插入操作。 當執行 CREATE INDEX、ALTER INDEX 或 UPDATE 時,該選項無效。 預設為 OFF。
--ignore_dup_key=on:打開,將重覆鍵值插入唯一索引時會出現警告消息。只有違反唯一性的行為才會失敗。
--ignore_dup_key=off:關閉,將重覆鍵值插入唯一索引時會出現錯誤消息。回滾整個INSERT操作。對於對視圖創建的索引、非唯一索引、XML 索引、空間索引以及篩選的索引,IGNORE_DUP_KEY 不能設置為 ON
ignore_dup_key=off,

--drop_existing:表示如果這個索引還在表上就 drop 掉然後在 create 一個新的。 預設為 OFF。
--drop_existing=on:指定要刪除並重新生成現有索引,其必須具有相同名稱作為參數 index_name。
--drop_existing=off:指定不刪除和重新生成現有的索引。 如果指定的索引名稱已經存在,SQL Server 將顯示一個錯誤。
drop_existing=off,

--online:指定在索引操作期間基礎表和關聯的索引是否可用於查詢和數據修改操作。 預設為 OFF。 REBUILD 可作為 ONLINE 操作執行。
--online=on:在索引操作期間不持有長期表鎖。 在索引操作的主要階段,源表上只使用意向共用 (IS) 鎖。
--這使得能夠繼續對基礎表和索引進行查詢或更新。
--操作開始時,在很短的時間內對源對象持有共用 (S) 鎖。
--操作結束時,如果創建非聚集索引,將在短期內獲取對源的 S(共用)鎖;
--當聯機創建或刪除聚集索引時,以及重新生成聚集或非聚集索引時,將在短期內獲取 SCH-M(架構修改)鎖。 但聯機索引鎖是短的元數據鎖,特別是 Sch-M 鎖必須等待此表上的所有阻塞事務完成。
--在等待期間,Sch-M 鎖在訪問同一表時阻止在此鎖後等待的所有其他事務。 對本地臨時表創建索引時,ONLINE 不能設置為 ON。
--online=off:在索引操作期間應用表鎖。這樣可以防止所有用戶在操作期間訪問基礎表。
--創建、重新生成或刪除聚集索引或者重新生成或刪除非聚集索引的離線索引操作將對錶獲取架構修改 (Sch-M) 鎖。
--這樣可以防止所有用戶在操作期間訪問基礎表。 創建非聚集索引的離線索引操作將對錶獲取共用 (S) 鎖。 這樣可以防止更新基礎表,但允許讀操作(如 SELECT 語句)。
online=off,

--allow_row_locks:指定是否允許行鎖。
--allow_row_locks=on:訪問索引時允許行鎖。資料庫引擎確定何時使用行鎖。
--allow_row_locks=off:不使用行鎖。
allow_row_locks=on,

--allow_page_locks:指定是否允許使用頁鎖。
--allow_page_locks=on:訪問索引時允許頁鎖。資料庫引擎確定何時使用頁鎖。
--allow_page_locks=off:不使用頁鎖。
allow_page_locks=on,

--fillfactor=n:指定一個百分比,指示在資料庫引擎創建或修改索引的過程中,應將每個索引頁面的葉級填充到什麼程度。 指定的值必須是 1 到 100 之間的整數。 預設值為 0。
fillfactor=1,

--maxdop=max_degree_of_parallelism:在索引操作期間替代 max degree of parallelism 配置選項。 有關詳細信息,請參閱 配置 max degree of parallelism 伺服器配置選項。 使用 MAXDOP 可以限制在執行並行計劃的過程中使用的處理器數量。 最大數量為 64 個處理器。
--max_degree_of_parallelism 可以是:
--1 - 取消生成並行計劃。
-->1 - 將並行索引操作中使用的最大處理器數量限製為指定數量。
--0(預設值)- 根據當前系統工作負荷使用實際數量的處理器或更少數量的處理器。
--有關詳細信息,請參閱 配置並行索引操作。
maxdop=1

--data_compression=row:為指定的表、分區號或分區範圍指定數據壓縮選項。 選項如下所示:
--none
--不壓縮表或指定的分區。 僅適用於行存儲表;不適用於列存儲表。
--row
--使用行壓縮來壓縮表或指定的分區。 僅適用於行存儲表;不適用於列存儲表。
--page
--使用頁壓縮來壓縮表或指定的分區。 僅適用於行存儲表;不適用於列存儲表。
--columnstore
--適用範圍: SQL Server 2014 (12.x) 到 SQL Server 2017。
--僅適用於列存儲表。 COLUMNSTORE 指定對使用 COLUMNSTORE_ARCHIVE 選項壓縮的分區進行解壓縮。 還原數據時,將繼續通過用於所有列存儲表的列存儲壓縮對 COLUMNSTORE 索引進行壓縮。
--columnstore_archive
--適用範圍: SQL Server 2014 (12.x) 到 SQL Server 2017。
--僅適用於列存儲表,這是使用聚集列存儲索引存儲的表。 COLUMNSTORE_ARCHIVE 會進一步將指定分區壓縮到更小。 這可用於存檔,或者用於要求更少存儲並且可以付出更多時間來進行存儲和檢索的其他情形
--data_compression=none

--on partitions ( { <partition_number_expression> | <range> } [ ,...n ] ) 適用範圍: SQL Server 2008 到 SQL Server 2017。
--指定對其應用 DATA_COMPRESSION 設置的分區。 如果表未分區,ON PARTITIONS 參數將生成錯誤。 如果不提供 ON PARTITIONS 子句,DATA_COMPRESSION 選項將應用於已分區表的所有分區。
--可以按以下方式指定 <partition_number_expression>:
--提供一個分區號,例如:ON PARTITIONS (2)。
--提供若幹單獨分區的分區號並用逗號將它們隔開,例如:ON PARTITIONS (1, 5)。
--同時提供範圍和單個分區,例如:ON PARTITIONS (2, 4, 6 TO 8)。
--<range> 可以指定為以單詞 TO 隔開的分區號,例如:ON PARTITIONS (6 TO 8)。
--,請多次指定 DATA_COMPRESSION 選項
--on partitions(1-2)
)
on [primary];
go

--添加唯一聚集索引描述
execute sp_addextendedproperty N'MS_Description',N'第一個唯一聚集索引',N'schema',N'dbo',N'table',N'test1',N'index',N'uniquenonclus1';
go

 

創建唯一非聚集索引優缺點

優點:

1、只要每個列中的數據是唯一的,就可以為同一個表創建多個唯一非聚集索引。

2、唯一索引提供幫助查詢優化器生成更高效的執行計劃的其他信息。

3、唯一索引能夠確保定義的列的數據完整性。

4、多列唯一索引能夠保證索引鍵中值的每個組合都是唯一的。

5、可以加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義。

6、在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間。

缺點:

1、創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加。

2、索引需要占物理空間,除了數據表占數據空間之外,每一個索引還要占一定的物理空間。

3、當對錶中的數據進行增加、刪除和修改的時候,索引也要動態的維護,降低了數據的維護速度。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數據類型 (詳細數據類型請參考:http://www.runoob.com/mysql/mysql-data-types.html) 數字 整型 tinyint int bigint 小數: float 在小數點後 位數比較短的情況下不精準; double 在小數點後 位數比較長的情況下不精準 字元 ...
  • 一、資料庫備份 備份的目的: 備份: 能夠防止由於機械故障以及人為誤操作帶來的數據丟失,例如將資料庫文件保存在了其它地方。 冗餘: 數據有多份冗餘,但不等備份,只能防止機械故障還來的數據丟失,例如主備模式、資料庫集群。 備份過程中必須考慮因素:1. 數據的一致性2. 服務的可用性 二、物理備份 1、 ...
  • 一、資料庫備份 1.命令簡介: # mysqldump -h 伺服器 -u用戶名 -p密碼 資料庫名 > 備份文件.sql1)關於資料庫名: -A, --all-databases 所有庫 school 資料庫名 school stu_info t1 school 資料庫的表stu_info、t1 ...
  • 1.LOCATE函數 LOCATE(substr,str) 返回子串 substr 在字元串 str 中第一次出現的位置。如果子串 substr 在 str 中不存在,返回值為 0。如果substr或str為NULL,則返回NULL。(從1開始)。 例如: mysql> SELECT LOCATE( ...
  • 一、開啟二進位日誌 1)未開啟二進位日誌之前: 2)開啟二進位日誌 修改my.cnf並且將以下參數加入其中,重啟mysql實例: 重啟伺服器: 3)查看開啟狀態; 4)註意事項 在官方文檔中,說啟用binary log只是需要將log-bin=mysql-bin設置即可,但是因為有bug,所以必須要 ...
  • /* CREATE DATABASE geovindu DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; use geovindu; */ -- 查詢編碼格式 show variables like '%char%'; -- SE... ...
  • 上周三面試題有兩道涉及Oracle的分頁查詢,沒有意外地涼了,現在總結一下。 · Mysql mysql的分頁可以直接使用關鍵字limit,句子寫起來比較方便。 語法: ① limit m,n 示例: ② limit m 示例: · Oracle Oracle有兩個方法進行分頁,一個是row_num ...
  • 由於在Geometry中,有相關自帶函數和SPATIAL INDEX的性能優化,可以讓某些位置計算的效率提升。以下是幾種計算方法的效果對比。 1. 數據準備 首先創建一個數據表,這是一個店鋪數據表,結構如下: 創建語句: CREATE TABLE `store_geometry` ( `id` in ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...