我有一个包含300多列并且没有索引的表但是,我需要使用另一个表的地址哈希值,它实际上是名字,姓氏和地址信息的组合,用于查找信息。大桌子。
我该怎么做才能加快速度?大表没有地址哈希值列。
我在想使用“搜索引擎”,但这是我不熟悉的。有什么方法我仍然可以使用SQL Server将数据附加到也有超过1400万的小表。
答案 0 :(得分:0)
使用表格字段的索引来快速获取数据。
Optimizing queries for 25+ million rows
Dynamically Query 100 Million Row Table-Efficiently
更多......
查询的速度取决于行数,但是如果您采取适当的优化来考虑性能因素,例如:
答案 1 :(得分:0)
300列是确定无法或无法正常化的标志。如果数据被正确规范化,关系数据库只能有性能查询,至少是第三范式(3NF),再加上合适的索引(根据场景,聚簇和非聚簇)。
否则你将不得不诉诸黑客以获得任何体面的表现,特别是如果表中有2亿条记录。黑客将是一个新的搜索表,它将大表中的主键与基于多个列的哈希值列链接(在您的情况下,名字和姓氏和地址)。此搜索表将具有基于哈希列的聚簇索引。搜索将检索大表中的主键以获取哈希值,然后使用该哈希值从大表中获取记录/行。
如果大牌桌上没有主键,那么情况会更糟。您需要将该哈希值添加为大表中的新列,并在该哈希值列上创建非聚簇索引。这将是第301号列,比关系数据库中的良好表格设计更进一步。
也许你现在没有时间正确地规范化表格,但是从长远来看,你必须对大表进行规范化,否则从长远来看你会遇到问题。