2 миллиона строк обычно являются не Очень Большой Базой данных, в зависимости от того, какую информацию Вы храните. Usualy, когда производительность ухудшает Вас, должен проверить Вашу стратегию индексации. Настраивающий Советник по вопросам Механизма базы данных SQL Server может помочь там.
Поток немного похож на обобщение zip
из других функциональных языков.
Для простых случаев, когда все элементы аргументов из вашего примера являются списками,
Thread[f[args]]
эквивалентен
f @@@ Transpose[{args}]
, как показано в первой паре примеров в документации. Основная проблема заключается в том, что у вас есть аргументы, которые не являются списками, и в этом случае они эффективно картируются; например,
Thread[g[{a, b}, c, {d, e}, f]]
эквивалентно
g[#1, c, #2, f]& @@@ Transpose[{{a, b}, {d, e}}]
Я обычно использую Thread для создания списков правил или списков уравнений.
Она работает аналогично функции Python zip ()
, но в несколько более общем виде. Например:
In[1] := Thread[{{1, 2, 3}, {4, 5, 6}}] (* f == List *)
Out[1] = {{1, 4}, {2, 5}, {3, 6}}
In[2] := Thread[f[{1, 2, 3}, {4, 5, 6}]]
Out[2] = {f[1, 4], f[2, 5], f[3, 6]}
In[3] := Thread[f[a+b+c, d+e+f], Plus]
Out[3] = f[a, d] + f[b, e] + f[c, f]