"select count ()" очень медленно - PullRequest
1 голос
/ 19 июля 2010

У меня есть база данных с 1 000 000 записей и такой запрос:

select count(code) from table1

Хорошо работает в локальной системе, но в сети работает очень медленно. Другие запросы типа select * from table выполняются быстро, но select count(code) from table1 очень медленно. Я не могу изменить структуру базы данных. Моя база данных - Foxpro, и я использую VB.NET.

Есть ли решение?

Редактировать: Должен ли я написать такой код?

dim ds as new dataset
dim da as new datadapter("select count(*) from table ", connection)
da.fill(ds,"tbl1")

Тогда как я могу получить select count(code) from table1 из набора данных?

Или я должен использовать LINQ?

Редактировать 2: Я имею в виду сравнение между select count(*) и select count(code).
Какое решение?

Ответы [ 2 ]

6 голосов
/ 19 июля 2010

Это будет быстрее сделать

select count(*) from table1

затем использовать count(code).

0 голосов
/ 19 июля 2010

select count (code) выбирает столбец «code» из таблицы, а затем подсчитывает их, но select * просто выбирает их, но не выполняет подсчет. Так что, если вы сравниваете эти два, тогда логически выберите * быстро.

Для моей таблицы, которая содержит более 1 000 000 записей, время выполнения:

выберите * = 0,9818625

выберите количество (имя_ столбца) = 1,571275

...