powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / как оптимальнее делать выборку из SQL Server?
15 сообщений из 15, страница 1 из 1
как оптимальнее делать выборку из SQL Server?
    #36602331
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как оптимальнее делать в сервисе?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
 1 . 
using (SqlConnection con = new SqlConnection(connectionString))
                {
                command = new SqlCommand("dbo.get_data");
                    command.Connection = con.Connection;
                command.CommandType = CommandType.StoredProcedure;
///...
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (!reader.HasRows)
                    {
                        return null;
                    }

                    while (reader.Read())
                    {
...
                    }
                 }
                }

 2 . 
SqlConnection oConn = new SqlConnection(); 
     DataTable oTable = new DataTable(); 
         
     try 
     {   
       oConn.ConnectionString =  "connection string";
       oConn.Open();       
       SqlDataAdapter oDA = new SqlDataAdapter("exec get_data",oConn); 
       oDA.Fill(oTable); 
       oConn.Close(); 
     } 
     catch (Exception e) {   }   
     finally{ if (oConn.State == ConnectionState.Open) { oConn.Close(); } } 

     // To Iterate Through Rows

     foreach(DataRow oRow in oTable.Rows) 
     {  
       Response.Write(oRow["username"].ToString()); 
     } 

...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36602374
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно с ридера прямо в таблицу грузить
Код: plaintext
datatable.Load(sp.ExecuteReader(CommandBehavior.CloseConnection));
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36602393
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шайтан,

оптимальнее generic юзать вместо datatable)
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36602411
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так все-таки вариант 2 предпочтительнее?
мне надо потом в массив или в лист грузить данные
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36602440
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKШайтан,

оптимальнее generic юзать вместо datatable)

какой generic?

мне после выборки надо заполнить свой объект полями из базы, т.е. сейчас я читаю из
ридера и заполняю поля объекта что-то типа

Код: plaintext
1.
2.
3.
myob.Name = r["name"].ToString();
myob.LengthSm = r["lensm"].ToString();
...


куда лучше всего прочитать данные из адапптера, чтобы потмо можно было так же по именам
к ним обратиться?

может DataSet ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
private static DataSet SelectRows(DataSet dataset,
    string connectionString,string queryString) 
{
    using (SqlConnection connection = 
        new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = new SqlCommand(
            queryString, connection);
        adapter.Fill(dataset);
        return dataset;
    }
}
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36602475
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKШайтан,

оптимальнее generic юзать вместо datatable)
особенно если в требованиях к проекту FW 2.0
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36602557
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

как оптимальнее?
1. SqlDataReader -> MyObj
2. SqlDataReader -> DataTable -> MyObj

смотря для чего... для разработки? для фунциклирования - понятно что 1
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36602653
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRWinnipuh,

как оптимальнее?
1. SqlDataReader -> MyObj
2. SqlDataReader -> DataTable -> MyObj

смотря для чего... для разработки? для фунциклирования - понятно что 1

мне надо , чтобы коннекция закрывалась как можно быстрее, данные можно и позже обработать.

Вот что интересно:
на выборке 1 млн записей, выбирается только поле uniqueidentifier, ф-ии 1 и 2 работают приблизительно 5 секунд, ф-ия 3 - рабоатет 3 секунды....
Правда, в ф-ии 3 пока нет внутри цикла создания объекта и заполнения его из ридера.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
//  1         
        private DataSet SelectRows(DataSet dataset,
            string connectionString, string queryString)
        {
            using (SqlConnection connection =
                new SqlConnection(connectionString))
            {
                SqlDataAdapter adapter = new SqlDataAdapter();
                adapter.SelectCommand = new SqlCommand(
                    queryString, connection);
                adapter.Fill(dataset);
                return dataset;
            }
        }
//  2 
        private DataTable SelectRows(DataTable datatable,
            string connectionString, string queryString)
        {
            using (SqlConnection connection =
                new SqlConnection(connectionString))
            {
                SqlDataAdapter adapter = new SqlDataAdapter();
                adapter.SelectCommand = new SqlCommand(
                    queryString, connection);
                adapter.Fill(datatable);
                return datatable;
            }
        }
//  3  
        private static List<Guid> SelectRowsReader(string connectionString, string queryString)
        {
            List<Guid> nodeList = new List<Guid>( 100000 );
            using (SqlConnection connection =
                new SqlConnection(connectionString))
            {
                connection.Open();
                SqlCommand command = new SqlCommand(queryString);
                command.Connection = connection;
                command.CommandType = CommandType.Text;
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (!reader.HasRows)
                    {
                        return null;
                    }
                    while (reader.Read())
                    {
                        Guid guid = new Guid(reader["id"].ToString());
                        nodeList.Add(guid);
                    }
                }
                return nodeList;
            }
        }
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36602700
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhмне надо , чтобы коннекция закрывалась как можно быстрее, данные можно и позже обработать.

Вот что интересно:
неудивительно, SqlDataReader -> MyObj всегда будет (всегда можно сделать) быстрее чем SqlDataReader -> DataTable
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36602722
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRWinnipuhмне надо , чтобы коннекция закрывалась как можно быстрее, данные можно и позже обработать.

Вот что интересно:
неудивительно, SqlDataReader -> MyObj всегда будет (всегда можно сделать) быстрее чем SqlDataReader -> DataTable

т.е. получается не смысла пытаться делать "disconnected recordset" на манер того, что в АДО, чтобы
коннект отключать как можно быстрее и помто обрабатывать даннные?
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36602768
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверное, соотношения по скорости очевидны
SqlDataReader -> MyObj всегда будет (всегда можно сделать) быстрее чем SqlDataReader -> DataTable
SqlDataReader -> DataTable всегда будет (всегда можно сделать) быстрее (но тут, возможно, не намного) чем SqlDataAdapter.Fill
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36603255
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В первом посте баянистый вопрос: что быстрее ридер или адаптер.
Наверное ридер, но не сильно. Т.к. адаптер скрыто использует ридер.
В любом случае на веб-сервисе это не самое узкое место.
Так что Winnipuh, не занимайся ерундой.
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36603700
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredВ первом посте баянистый вопрос: что быстрее ридер или адаптер.
Наверное ридер, но не сильно. Т.к. адаптер скрыто использует ридер.
В любом случае на веб-сервисе это не самое узкое место.
Так что Winnipuh, не занимайся ерундой.

не то чтобы баянистый, но исходя из задачи поскорее закрывать коннект хотел убедиться, помню в АДО делал дисконнектнуыте рекордсеты, и коннекцию не держал.

После экспериментов убедился, что все *****, и что обычный ридер и даже набивание своих объектов в цикле по ридеру на 1млн записей все равно быстрее моделирования дисконнектнутости через адаптер и заполенения датасета или дататабле.
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36603738
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это второй развесистый баян: нефиг тащить миллион записей на клиента (в смысле клиента SQL Server-а, и уж тем более тащить на клиента веб-сервиса просто безумие).
...
Рейтинг: 0 / 0
как оптимальнее делать выборку из SQL Server?
    #36603764
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredЭто второй развесистый баян: нефиг тащить миллион записей на клиента (в смысле клиента SQL Server-а, и уж тем более тащить на клиента веб-сервиса просто безумие).

не продохнуть .
да на 1 млн это я в тестовом приложении время мерил, чтобы было заметно
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / как оптимальнее делать выборку из SQL Server?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]