SQL Server or DB_File?
10 отговора
530 прегледа
SQL Server or DB_File?
Tezi koito sa rabotili s SQL Server znaqt che connect-a kum server-a stava dosta bavno.
Tova koeto iskam e da update-vam okolo 20.000 zapisa v tablica (mnogo prosta: key->value, abe edin hash trebe da ide v tablicata). Reshenieto e s edin slojen i ogromen UPDATE ...
Problema e che tova se pravi dosta chesto i ne iskam persistent connection kum server-a.
Nqkoi ima li nabljudeniq i sravneniq za neshto podobno napraveno s SQL Server?
V momenta sum go napravil na Perl i izpolzvam DB_File (Berkeley DB) za store na toq hash, kato mislq da go napisha na C, che pak e bavno :(
Tova koeto iskam e da update-vam okolo 20.000 zapisa v tablica (mnogo prosta: key->value, abe edin hash trebe da ide v tablicata). Reshenieto e s edin slojen i ogromen UPDATE ...
Problema e che tova se pravi dosta chesto i ne iskam persistent connection kum server-a.
Nqkoi ima li nabljudeniq i sravneniq za neshto podobno napraveno s SQL Server?
V momenta sum go napravil na Perl i izpolzvam DB_File (Berkeley DB) za store na toq hash, kato mislq da go napisha na C, che pak e bavno :(
Re: SQL Server or DB_File?
zashto ne si podgotvish dannite v edin file i da gi importnesh s bcp
az toku sto napravih obratnoto ot SQL Server kam Sybase i stana dovolno barzo - predi tova drop na vsichki indexi i tn
posle gi recreate-vash
kato v sluchaia stava duma za po 5-6 miliona zapisa
osven tova mashinata sas Sybase e dovolno slaba PPro na 200 MHz
skoro ste mi se nalozhi da prehvarlia oste edna baza koiato se update-va s po 40-50 hiliadi zapisa na den - togava neznam kak ste e
az toku sto napravih obratnoto ot SQL Server kam Sybase i stana dovolno barzo - predi tova drop na vsichki indexi i tn
posle gi recreate-vash
kato v sluchaia stava duma za po 5-6 miliona zapisa
osven tova mashinata sas Sybase e dovolno slaba PPro na 200 MHz
skoro ste mi se nalozhi da prehvarlia oste edna baza koiato se update-va s po 40-50 hiliadi zapisa na den - togava neznam kak ste e
Re: SQL Server or DB_File?
Dai
UPDATE ...
Da pomislim malko
Linux is like a wigwam - No Windows, No Gates, Apache inside
UPDATE ...
Da pomislim malko
Linux is like a wigwam - No Windows, No Gates, Apache inside
Re: SQL Server or DB_File?
V sushtnost tova koeto si misleh s edin UPDATE nqma da stane:(
update hash_name set value_col=?? where key_col in (key1, key2 ...)
taka shte promenq vsichki value_col na edna stoinost ili moga da gi promenq po edin i susht nachin value_col=value_col+??:(
i oshte, ako key-a go nqma trqbva da se insert-ne:((
Trqbva mi neshto takova:
update hash_name set value_col in (val1, val2 ..) where key_col in (key1, key2 ...)
a MySql-a ne go moje, pone ne taka.
update hash_name set value_col=?? where key_col in (key1, key2 ...)
taka shte promenq vsichki value_col na edna stoinost ili moga da gi promenq po edin i susht nachin value_col=value_col+??:(
i oshte, ako key-a go nqma trqbva da se insert-ne:((
Trqbva mi neshto takova:
update hash_name set value_col in (val1, val2 ..) where key_col in (key1, key2 ...)
a MySql-a ne go moje, pone ne taka.
Re: SQL Server or DB_File?
Ne razbrah savsem problema ama...
update hash_name value_col=value_col+xx raboti bez problemi
Estestveno xx mozhe da e chislo, colona, funkcia i t.n.
> i oshte, ako key-a go nqma trqbva da se insert-ne:((
Ami procheti kakvo pravi v MySQL
REPLACE INTO TABLE ....
Formata e tochno kato na INSERT INTO TABLE - s tazi razlika che ako PRIMARY KEY veche go ima ne dava greshka a pravi UPDATE
t.e.
DELETE FROM TABLE WHERE pri_key = (tozi koito e vuv values(...));
INSERT INTO TABLE ....;
Linux is like a wigwam - No Windows, No Gates, Apache inside
update hash_name value_col=value_col+xx raboti bez problemi
Estestveno xx mozhe da e chislo, colona, funkcia i t.n.
> i oshte, ako key-a go nqma trqbva da se insert-ne:((
Ami procheti kakvo pravi v MySQL
REPLACE INTO TABLE ....
Formata e tochno kato na INSERT INTO TABLE - s tazi razlika che ako PRIMARY KEY veche go ima ne dava greshka a pravi UPDATE
t.e.
DELETE FROM TABLE WHERE pri_key = (tozi koito e vuv values(...));
INSERT INTO TABLE ....;
Linux is like a wigwam - No Windows, No Gates, Apache inside
Re: SQL Server or DB_File?
"update hash_name value_col=value_col+xx"
Problema e che xx e razlichno za vseki zapis!
Za REPLACE, da znam, taka trqbva da e.
Iskam s edin REPLACE da update-vam vsichki zapisi kato promenq stoinosta na dadenena kolona s razlichna stoinist.
Problema e che xx e razlichno za vseki zapis!
Za REPLACE, da znam, taka trqbva da e.
Iskam s edin REPLACE da update-vam vsichki zapisi kato promenq stoinosta na dadenena kolona s razlichna stoinist.
Re: SQL Server or DB_File?
Kakvo znachenie ima che
value_col=value_col+xx
e razlichno zqa vseki red?
Pak ne razbiram problema.
xx mozhe da e kakvato si iskash kombinacia ot funkcii formuli, concat(), if(), case when .. then ... when .. then ... end
I kvo li ne oshte
Linux is like a wigwam - No Windows, No Gates, Apache inside
value_col=value_col+xx
e razlichno zqa vseki red?
Pak ne razbiram problema.
xx mozhe da e kakvato si iskash kombinacia ot funkcii formuli, concat(), if(), case when .. then ... when .. then ... end
I kvo li ne oshte
Linux is like a wigwam - No Windows, No Gates, Apache inside
Re: SQL Server or DB_File?
Ok, davam primer:
talica hash s koloni key i value.
iskam s edin uptade(replace) na promenq nqkolko value na key.
$hash{key1} = value1
$hash{key2} = value2
$hash{key3} = value3
kato key* sa imena, a value* sa int.
Ideq kak tochno da stane?
talica hash s koloni key i value.
iskam s edin uptade(replace) na promenq nqkolko value na key.
$hash{key1} = value1
$hash{key2} = value2
$hash{key3} = value3
kato key* sa imena, a value* sa int.
Ideq kak tochno da stane?
Re: SQL Server or DB_File?
mysql> create table hash (key char(16), value char(16));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into hash (var) values('key1'), ('key2'), ('key3');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from hash;
+------+-------+
| var | value |
+------+-------+
| key1 | NULL |
| key2 | NULL |
| key3 | NULL |
+------+-------+
3 rows in set (0.00 sec)
mysql> update hash set value = case var when 'key1' then 'value1' when 'key2' then 'value1' when 'key3' then 'value3' end;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> select * from hash;
+------+--------+
| var | value |
+------+--------+
| key1 | value1 |
| key2 | value1 |
| key3 | value3 |
+------+--------+
3 rows in set (0.00 sec)
-----------
Taka stava li?
Ne kazvam che e 'inteligenten' nachin :)
Spored men s TEMP tablica e po-dobroto reshenie
update hash set value = case key when 'key1' then 'value1' when 'key2' then 'value1' when 'key3' then 'value3' end;
Linux is like a wigwam - No Windows, No Gates, Apache inside
Query OK, 0 rows affected (0.00 sec)
mysql> insert into hash (var) values('key1'), ('key2'), ('key3');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from hash;
+------+-------+
| var | value |
+------+-------+
| key1 | NULL |
| key2 | NULL |
| key3 | NULL |
+------+-------+
3 rows in set (0.00 sec)
mysql> update hash set value = case var when 'key1' then 'value1' when 'key2' then 'value1' when 'key3' then 'value3' end;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> select * from hash;
+------+--------+
| var | value |
+------+--------+
| key1 | value1 |
| key2 | value1 |
| key3 | value3 |
+------+--------+
3 rows in set (0.00 sec)
-----------
Taka stava li?
Ne kazvam che e 'inteligenten' nachin :)
Spored men s TEMP tablica e po-dobroto reshenie
update hash set value = case key when 'key1' then 'value1' when 'key2' then 'value1' when 'key3' then 'value3' end;
Linux is like a wigwam - No Windows, No Gates, Apache inside
Re: SQL Server or DB_File?
Da, super. Ne predpolagah che moje da se napravi taka! Ostava da go probvam za da vidq kak se durji pri golqm broi redove.
Mnoogo blagodarq za pomoshta!
Mnoogo blagodarq za pomoshta!
Re: SQL Server or DB_File?
create temporary table ttt select <kakvoto ti triabva>;
I posle JOIN koito da napravi heshtata, drop table ttt;
:))
Linux is like a wigwam - No Windows, No Gates, Apache inside
I posle JOIN koito da napravi heshtata, drop table ttt;
:))
Linux is like a wigwam - No Windows, No Gates, Apache inside