Looking for solution I found something strange in code:
libraries/cck/base/list/list_inc.php
if ( ! $error ) {
$current['stage'] = 0;
$items = CCK_List::getList( $ordering, $areas, $fields, $fields_order, $config, $current, $options, $user );
}
$total = count( $items );
// Pagination
if ( $limitstart != -1 && $limitend > 0 && !( $preconfig['limit2'] > 0 ) ) {
$items = array_splice( $items, $limitstart, $limitend );
}
It seems that all list is loaded, and after that trimed to limitstart and limitend. With huge data amount it is not optimal.
Maybe some parameters to getList function?
Regards