我有一個表:按位計算和計數數之後
create_table "fingerprint" do |t|
t.bit "fp1", limit: 64
t.bit "fp2", limit: 64
t.bit "fp3", limit: 64
t.bit "fp4", limit: 64
t.bit "fp5", limit: 64
end
fp1 | fp2 | fp3 | fp4 | fp5
---------------------------
001 | 010 | 011 | 100 | 101
而5個元素
的陣列fp = [5,4,3,2,1]
我想和位表中的每個記錄與每個元素fp
,然後計算5列以上的設置位總數。
例如:
(001 & 5) = 001
(010 & 4) = 000
(011 & 3) = 011
(100 & 2) = 000
(101 & 1) = 001
Total number of set bits: 4
我想我的循環表的每一行此過程。請幫助我一個有效的方式來做到這一點(表格有大約100k行)。
預先感謝您。
什麼類型的列? – klin
對不起,我忘記了這個信息。我已經更新了這個問題,列類型是「位(64)」 –
你最好的方法取決於你希望它「有效」的時候有多嚴重。你是否願意創建一個plpgsql函數或者一個動態加載的c語言函數?此查詢每天,每小時或每分鐘運行多少次? – NovaDenizen