private void Init()
        {
            _start = 0;
            _end   = 0;

            // for instance, only manage index for one field query using 'equal'
            if (_classInfo.HasIndex() && _query.HasCriteria() &&
                ((IInternalConstraint)_query.GetCriteria()).CanUseIndex())
            {
                var fields = _query.GetAllInvolvedFields();
                if (fields.IsNullOrEmpty())
                {
                    _useIndex = false;
                }
                else
                {
                    var fieldIds = GetAllInvolvedFieldIds(fields);
                    _classInfoIndex = _classInfo.GetIndexForAttributeIds(fieldIds);
                    if (_classInfoIndex != null)
                    {
                        _useIndex = true;
                    }
                }
            }

            // Keep the detail
            _details = GetDetails();
        }