Если у вас есть только 1 строка в таблице, количество элементов для индекса, конечно, должно быть 1. Это просто подсчет количества уникальных значений.
Если вы рассматриваете индекс как справочную таблицу, основанную на сегментах (например, хэш), то количество элементов - это количество блоков.
Вот как это работает: когда вы строите индекс по набору столбцов (a,b,c,d)
, тогда база данных проходит по всем строкам таблицы, просматривая упорядоченные четверки этих 4 столбцов для каждой строки. Допустим, ваш стол выглядит так:
a b c d e
-- -- -- -- --
1 1 1 1 200
1 1 1 1 300
1 2 1 1 200
1 3 1 1 200
Итак, на что смотрит база данных, это только 4 столбца (a, b, c, d):
a b c d
-- -- -- --
1 1 1 1
1 2 1 1
1 3 1 1
Видите, что осталось только 3 уникальных строки? Они станут нашими ведрами, но мы вернемся к этому. В действительности есть также идентификатор записи или идентификатор строки для каждой строки в таблице. Итак, наш оригинальный стол выглядит так:
(row id) a b c d e
-------- -- -- -- -- --
00000001 1 1 1 1 200
00000002 1 1 1 1 300
00000003 1 2 1 1 200
00000004 1 3 1 1 200
Поэтому, когда мы смотрим только на 4 столбца (a, b, c, d), мы действительно смотрим также на идентификатор строки:
(row id) a b c d
-------- -- -- -- --
00000001 1 1 1 1
00000002 1 1 1 1
00000003 1 2 1 1
00000004 1 3 1 1
Но мы хотим выполнить поиск по (a, b, c, d), а не по идентификатору строки, поэтому мы производим что-то вроде этого:
(a,b,c,d) (row id)
--------- --------
1,1,1,1 00000001
1,1,1,1 00000002
1,2,1,1 00000003
1,3,1,1 00000004
И, наконец, мы группируем все идентификаторы строк с одинаковыми значениями (a, b, c, d):
(a,b,c,d) (row id)
--------- ---------------------
1,1,1,1 00000001 and 00000002
1,2,1,1 00000003
1,3,1,1 00000004
Видите это? Значения (a, b, c, d), которые являются (1,1,1,1) (1,2,1,1) и (1,3,1,1), стали ключами для нашей справочной таблицы в строки исходной таблицы.
На самом деле ничего этого не происходит, но это должно дать вам хорошее представление о том, как можно сделать «наивную» (то есть прямую) реализацию индекса.
Но суть в следующем: количество элементов просто измеряет количество уникальных строк в индексе. И в нашем примере это было количество ключей в нашей таблице поиска, которое было 3.
Надеюсь, это поможет!