|
Тема |
Re: mysql compare [re: Йopдaн] |
|
Автор | Йopдaн (Нерегистриран) | |
Публикувано | 14.10.06 04:37 |
|
|
>salle (един такъв): Аз не бих натоварил в java или php два масива с по 10 000 000
Вярно, в java без това не може да има толкова големи масиви
>salle (един такъв): да ги сравнявам всеки със всеки
Както писах идеята е с 1 цикъл.
>NDeu (динозавър): най-елегантно е ако може да се ъпгредне до версия с тригери
Има друга (основна) програма, работеща на 4, кой ще гарантира как ще се държи на 5??
Сега да поясня какво имам предвид. Join-a на 2 таблици прави NxM операции (основно дискови, което е най-бавно), ако има индекси Nxlog(M), и накрая, ако М е малко сървъра може да кешира втората таблица, но случая не е такъв.
Ако има 2 подредени масива, може с 1 цикъл (N операции) да се сравнят елементите им. Проблема при java е, че не може да има толкова големи масиви. В С и Delphi предполагам, че може - това са 160 MB. Taka че трябва данните да се четат и обработват на порции. Това усложнява още малко алгоритъма, но не увеличава времето: всяка таблица се чете по 1 път и има 1 цикъл. Голяма е разликата между 1 цикъл и 2 вложени цикъла за големи N. И да повторя: Иначе имам подозрения, че същия алгоритъм може да стане и с курсори.
i=0;
j=0;
while(i<MAX && j<MAX) {
if(a>b[j])
j++;
else if(a<b[j]) {
while(a<b[j]) {
System.out.println("i="+i+" a="+a);
i++;
}
}
else {
i++;
j++;
}
}
for (;i<MAX;i++)
System.out.println("i="+i+" a="+a);
// Може и да съм объркал нещо, но това е идеята
|
| |
|
|
|