タグ

2009年11月7日のブックマーク (1件)

  • 最速並び替え研究会 - Yappo::タワシ

    1000万行とか10億行でも何でもいいけど、いっぱいデータが入ってるテーブルのsortカラムの値を並び替えたい。 例えば以下のようにsort_testテーブルを作る use strict; use warnings; use DBI; my $dbi = DBI->connect('DBI:mysql:database=test'); $dbi->do('DROP TABLE IF EXISTS sort_test'); $dbi->do(<<SQL); CREATE TABLE sort_test ( id INT, sort INT, index(id), index(sort) ) ENGINE=InnoDB SQL my $sth = $dbi->prepare('INSERT INTO sort_test VALUES' . join(', ', ('(?,?)')x10_000

    sh2
    sh2 2009/11/07
    10おきにして埋まった場合はUPDATE sort_test SET sort = sort + 1。これは次に空きがあるところまでやれば良いので最初の例より多少は効率的。この考えを掘り下げるとたぶんB+木になるがそれを書くには余白が(ry