|
проблема оптимизации сторна
|
|||
---|---|---|---|
#18+
есть таблица вида name | i | name1 | i1 | var | ----------------------------------------------- a | 1 | null | null | text a | 1 | null | null | text a | 1 | null | null | text a | 1 | null | null | text a | 1 | null | null | text ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2012, 21:36 |
|
проблема оптимизации сторна
|
|||
---|---|---|---|
#18+
сорь есть таблица вида name | i | name1 | i1 | var | ----------------------------------------------- a | 1 | null | null | text b | 2 | a | 1 | text1 c | 3 | b | 2 | text2 d | 4 | null | null | text3 e | 5 | null | null | text4 _________________________________________ create table t1 ( name char(2), i integer, name1 char(2), i1 integer, var char(10) ); insert into t1 values (" a", 1, null,null,"text"); insert into t1 values (" b", 2, "a",1 ,"text"); insert into t1 values (" c", 3, "b",2,"text"); insert into t1 values (" d", 4, null,null,"text"); insert into t1 values (" e", 5, null,null,"text"); __________________________________________ нужно избавится от лишних записей и привести таблицу к виду c | 3 | b | 2 | text2 d | 4 | null | null | text3 e | 5 | null | null | text4 убираем строчку если есть повторение name и i в name и i1 собственно проблема в скорости записей в табице около 40-50 млн + 20-30 полей аналогов var то что я написал работает достаточно медленно 3-4 секунды надо сделать чтобы было <1 var_storn = SELECT name,i,name1,i1,var from t1 where (name,i ) NOT IN (SELECT (name1,i1 FROM t1 where name!='') ; или что то подобное(выдрал из кода кусок и сменил переменные) как я понимаю проблема в подзапросе ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2012, 21:55 |
|
проблема оптимизации сторна
|
|||
---|---|---|---|
#18+
_mun4kin_собственно проблема в скорости записей в табице около 40-50 млн + 20-30 полей аналогов var то что я написал работает достаточно медленно 3-4 секунды надо сделать чтобы было <1 Во первых, я не думаю что эта операция настолько часто выполняется чтобы был смысл бороться за секунды. Во вторых, у тебя задача поставлена не полно. Если у тебя есть две записи совпадающие по указанному критерию, ты выбираешь одну из них - какую? Если у тебя будет три записи с совпадением, какую из них ты удалишь а какую оставишь? В третьих, у тебя примеры не верны. Сделай реальные тестовые скрипты с реальными тестовыми данными. И не забывай про кнопки SRC и CSV. Прочитай FAQ форума о том как оформлять сообщения. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 00:43 |
|
проблема оптимизации сторна
|
|||
---|---|---|---|
#18+
реальную таблицу сделать не могу она на сервере. секунды оч критичны это маленькая часть большого целого суммарное время не должно превышать 5 сек сейчас это работает около 3 минут. я переношу sql на sap hana sql. тестовая таблица на sql Код: sql 1. 2. 3. 4. 5.
заполнение nameiname1i1testa1? ?a1b2a1a2c3??a3d4b2a4 рабочий скрипт Код: sql 1. 2. 3.
результат nameitestс3a3d4a4 да еще not in или in не поддерживается быстрым движком на котором надо сделать.name и i ключи алгоритм реализации без in 1.разделяю на 2 таблицы t1 name,i в которую записываю доп столбец равный '1' и t2 name1,i1 +доп столбец равный '2' 2. делаю union t1 и t2 3. агригирую по добавленному столбцу 4. откидываю значения >1 5. джойню с исходной таблицей sql скрипт там не пишется позже могу скинуть если не понятен алгоритм. хочется найти решение с минимальным временем ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 10:10 |
|
|
start [/forum/topic.php?fid=54&msg=38095771&tid=2008940]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 266ms |
total: | 406ms |
0 / 0 |