|
какой запрос легче?
|
|||
---|---|---|---|
#18+
Есть две таблицы, Заказчики и Заказы, приблизительно такие: TB_CUSTOMERS: (CUST_ID, NAME...) TB_ORDERS: (ORDER_NUM, CUST_ID....) И есть два способа реализовать одну и ту же выборку: А) SELECT O.NUM, C.NAME FROM TB_ORDERS O JOIN TB_CUSTOMERS C ON O.CUST_ID=C.CUST_ID Б) Процедура Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Одинаковы ли эти способы с точки зрения производительности для сервера? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 20:21 |
|
какой запрос легче?
|
|||
---|---|---|---|
#18+
Глупость спрошу, но планы запросов какие? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 20:26 |
|
какой запрос легче?
|
|||
---|---|---|---|
#18+
в планах я не силён... но будем считать, что все поля, которые участвуют в where/join индексированы и сервер с планом не ошибётся p.s. на всяк.случай - fb 2.5 3й диалект ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 21:31 |
|
какой запрос легче?
|
|||
---|---|---|---|
#18+
tantico2> все поля, которые участвуют в where/join индексированы tantico2> p.s. на всяк.случай - fb 2.5 3й диалект Нет, не одинаковы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 23:01 |
|
какой запрос легче?
|
|||
---|---|---|---|
#18+
tantico2в планах я не силён. Планы показывает IBExpert при выполнении (F9) или препарировании (Ctrl+F9) запроса в SQL-редакторе. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 07:16 |
|
какой запрос легче?
|
|||
---|---|---|---|
#18+
tantico2Есть две таблицы, Заказчики и Заказы, приблизительно такие: TB_CUSTOMERS: (CUST_ID, NAME...) TB_ORDERS: (ORDER_NUM, CUST_ID....) И есть два способа реализовать одну и ту же выборку: А) SELECT O.NUM, C.NAME FROM TB_ORDERS O JOIN TB_CUSTOMERS C ON O.CUST_ID=C.CUST_ID Б) Процедура Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Одинаковы ли эти способы с точки зрения производительности для сервера? нет. абсолютно разные. несопоставимые. запросы, естественно, надо делать по плану А). второе. - это вообще не запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 07:25 |
|
какой запрос легче?
|
|||
---|---|---|---|
#18+
tantico2, а хз, мерить надо. В данном случае запрос должен быть эффективней. Запрос может соединять таблицы не в том порядке который у тебя в процедуре. Учитывая что кардинальность TB_CUSTOMERS обычно меньше TB_ORDERS, то скорее всего порядок будет обратный. Для начала почитай http://www.ibase.ru/dataaccesspaths/ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 07:30 |
|
какой запрос легче?
|
|||
---|---|---|---|
#18+
Симонов ДенисДля начала почитай http://www.ibase.ru/dataaccesspaths/ Спасибо, буду смотреть. miwaonlineПланы показывает IBExpert Знаю. Просто я думал, что сервер всегда выдаёт одинаковую реакцию на одинаково написанные запросы с одинаковыми индексами. Т.е. вариант А в любых базах, с любыми данными всегда будет выполняться одним и тем же способом. А вариант Б - своим, но тоже единственным. Но вот товарищи подсказывают, что сервер что-то ещё принимает во внимание и его реакция, напр, на вар.А может оказаться разной в разных ситуациях. Я правильно понимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 17:15 |
|
какой запрос легче?
|
|||
---|---|---|---|
#18+
tantico2Просто я думал, что сервер всегда выдаёт одинаковую реакцию на одинаково написанные запросы с одинаковыми индексами. Т.е. вариант А в любых базах, с любыми данными всегда будет выполняться одним и тем же способом. А вариант Б - своим, но тоже единственным. Но вот товарищи подсказывают, что сервер что-то ещё принимает во внимание и его реакция, напр, на вар.А может оказаться разной в разных ситуациях. Я правильно понимаю? Кроме запросов и индексов есть еще и сами данные, как ни странно. Соответственно, на разных данных индексы будут разные со всеми вытекающими. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 17:43 |
|
какой запрос легче?
|
|||
---|---|---|---|
#18+
tantico2, даже в столь примитивной схеме может быть - много заказчиков, делающих редкие заказы - мало заказчиков, делающих дофигища заказов. Уже в этих условиях для обычного join сервер будет генерить разный план запроса. Твой for select - это программерская привычка к циклам, которая железобетонно определит порядок обращения к таблицам, независимо от их содержимого. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 19:06 |
|
|
start [/forum/topic.php?fid=40&msg=39226077&tid=1562198]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 311ms |
total: | 454ms |
0 / 0 |