Показать сообщение отдельно
Старый 04.11.2010, 10:37   #1  
Old is offline
Old
Участник
 
11 / 10 (1) +
Регистрация: 10.10.2004
order by тормозит
X++:
    InventTrans inventTrans;
    Counter     counter;
    TimeOfDay   start;
    ;
    start = timenow();
    for (counter = 1; counter <= 10; counter ++)
        while select inventTrans
            order by statusIssue
            where inventTrans.inventTransId   == '1234567890'               &&
                  inventTrans.statusReceipt   == StatusReceipt::None        &&
                  inventTrans.statusIssue     >= StatusIssue::ReservOrdered &&
                  inventTrans.statusIssue     <= StatusIssue::OnOrder
        {
            info(inventTrans.ItemId);
        }
    info(int2str(timenow() - start));
    start = timenow();
    for (counter = 1; counter <= 10; counter ++)
        while select inventTrans
//            order by statusIssue
            where inventTrans.inventTransId   == '1234567890'               &&
                  inventTrans.statusReceipt   == StatusReceipt::None        &&
                  inventTrans.statusIssue     >= StatusIssue::ReservOrdered &&
                  inventTrans.statusIssue     <= StatusIssue::OnOrder
        {
            info(inventTrans.ItemId);
        }
    info(int2str(timenow() - start));
Info Сообщение (13:28:54) 10
Info Сообщение (13:28:54) 0

Господа, это только у меня, или кто-то решал эту проблему?
Запрос элементарный, проиндексировано по inventTransId.
Сортировка по другим полям тормозит еще больше.
Решение есть, но что-то здесь мне не нравитcя.

Ax3.0 SP3 KR3 SQL2005

Последний раз редактировалось Old; 04.11.2010 в 10:57.