簡體   English   中英

如何查詢具有300列和超過2億條記錄的表?

[英]How to query a table with 300 columns and over 200 million records?

我有一個具有300多個列且沒有索引的表,但是,我需要使用另一個表的地址哈希值,該值實質上是名字,姓氏和地址信息的組合,以便在大表中查找信息。

我應該怎么做才能加快速度? 大表沒有地址哈希值列。

我正在考慮使用“搜索引擎”,但這是我不熟悉的東西。 有什么辦法我仍然可以使用SQL Server將數據追加到也有1400萬以上的小表中。

對表字段使用索引可快速獲取數據。

SQL-索引

優化25+百萬行的查詢

有效地動態查詢一億行表

更多 ...

查詢的速度取決於行數,但是如果您進行適當的優化,則需要考慮性能因素,例如:

  • 索引聚簇/非聚簇
  • 資料快取
  • 表分區
  • 執行計划緩存
  • 資料分配

300列肯定是不良或無規范化的跡象。 如果數據已正確規范化(至少第三范式(3NF))以及適當的索引(根據情況而分為集群和非集群),則關系數據庫只能進行高性能查詢。

否則,您將不得不借助黑客手段來獲得不錯的性能,尤其是當表中有2億條記錄時。 黑客將是一個新的搜索表,該表將大表中的主鍵與基於幾列(在您的情況下,名字和姓氏和地址)的哈希值列鏈接在一​​起。 該搜索表將具有基於哈希列的聚簇索引。 搜索將檢索大表中的主鍵以獲取哈希值,然后使用該哈希值從大表中獲取記錄/行。

如果大表上沒有主鍵,那就更糟了。 您將需要將該哈希值添加為大表中的新列,並在該哈希值列上創建非聚集索引。 那將是列號301,比關系數據庫中良好的表設計又邁了一步。

也許您現在沒有時間適當地規范化表,但是從長遠來看,您將必須規范大表,否則從長遠來看,您將不斷遇到問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM