首页 > 解决方案 > 大数组中的快速线搜索 - powershell

问题描述

我有一些大约 100k 行的数组(从 csv 文件导出)。磁盘上的文件大小约为 22mb 我只需要找到一些数据行,处理它并加载到 mssql(我需要将 csv 数据与 mssql 同步)

问题是搜索花费了将近 1 秒(~ TotalMilliseconds : 655,0788)!

$csv.Where({$_.'Device UUID' -eq 'lalala'})

有什么办法可以加快速度吗?

标签: powershell

解决方案


将所有 100K 行加载到哈希表中,使用Device UUID属性作为键 - 这将比通过迭代整个数组更快地定位行.Where({...})

$deviceTable = @{}
Import-Csv .\path\to\device_list.csv |ForEach-Object {
  $deviceTable[$_.'Device UUID'] = $_
}

现在这将花费不到1 秒的时间:

$matchingDevice = $deviceTable['lalala']

推荐阅读