powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate. Скорость запроса
1 сообщений из 1, страница 1 из 1
NHibernate. Скорость запроса
    #36668193
Hug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hug
Гость
Всем привет.
Тут недавно сел в лужу. Говорил, что "мой способ" не намного медленнее.
А задачка то всего лишь сделать 3000 селектов и считать одно поле.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
string query = String.Format(@"SELECT pi.id 
                           FROM summary_order.price_item pi 
                           WHERE (pi.id = {0} or (pi.price_id = {1} and pi.provider_price_item_id = {2}))
                           ORDER BY pi.id limit 1", priceItem.Id, idPrice, priceItem.ProviderPriceItemId);
            using (var conn = new MySqlConnection("ххх"))
            using (var cmd = new MySqlCommand(query, conn))
            {
                cmd.CommandType = CommandType.Text;
                cmd.Connection.Open();
                int id = 0;
                MySqlDataReader reader = cmd.ExecuteReader();
                if (reader.Read())
                    id=reader.GetInt32("id");
                reader.Close();
                return id;
            }
Мой способ:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ICriteria criteria = NHibernateStateLessSession.CreateCriteria(typeof(PriceItem)).
                AddOrder(NHibernate.Criterion.Order.Desc(PriceItem.Properties.Id)).
                SetFirstResult(0).
                SetMaxResults(1).
                Add(Restrictions.Or
                    (Restrictions.Eq(PriceItem.Properties.Id, priceItem.Id),
                              Restrictions.And(               
                                    Restrictions.Eq(String.Format("{0}.Id", PriceItem.Properties.Price), idPrice),
                                    Restrictions.Eq(PriceItem.Properties.ProviderPriceItemId, priceItem.ProviderPriceItemId))));
return criteria.UniqueResult<PriceItem>();



Запросы генерятся одинаковые, за исключением что хибернейтом выбираются все поля, а адо только 1 поле. Но первый цикл происходит за 10-15сек. А мой 25-30сек. Ну не в два же раза.
Что я не так делаю???
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate. Скорость запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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