JDBC не зависит от базы данных и не определяет многое с точки зрения статистики.Единственный тип статистики, связанной с таблицами, в настоящее время определенный в JDBC, является частью DatabaseMetaData.getIndexInfo
, и они в основном необязательны.Я не уверен, какие драйверы реализуют это и в какой степени.
См. DatabaseMetaData.getIndexInfo
, специально для TYPE
tableIndexStatistic
:
CARDINALITY
long
=> Если TYPE
равно tableIndexStatistic
, то это число строк в таблице;в противном случае это число уникальных значений в индексе. PAGES
long
=> Если TYPE
равно tableIndexStatistic
, то это число страниц, используемых для таблицы, в противном случае этоколичество страниц, используемых для текущего индекса.
Даже если драйвер для вашей базы данных поддерживает tableIndexStatistic
, вам, вероятно, лучше использовать специальные функции базы данных для получения статистики,так как они с большей вероятностью будут документированы, имеют более широкий диапазон вариантов, и все больше людей знают о значении и толковании.
Хотя я являюсь членом группы экспертов JDBC, я не знаюиз исторических причин этого отсутствия (или если оно вообще когда-либо возникало, прежде чем я присоединился), но если бы мне пришлось теоретизировать, я думаю, это вероятно, потому что типы и доступность статистики сильно различаются между базами данных.
Это разнообразие затрудняет стандартизацию API, который по-прежнему может использоваться обеими сторонами (статистические данные практически отсутствуют или имеется большое разнообразие статистических данных).Нет ничего более расстраивающего, чем иметь обширный (и, возможно, сложный) API, просто ничего не получая от него, потому что он не поддерживается вашей базой данных.В том же духе может быть довольно неприятно иметь базу данных с большим количеством статистики, но вы не можете получить к ней доступ, потому что она просто не соответствует стандартному API.