powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Эффективная выборка записей по списку ID
20 сообщений из 70, страница 3 из 3
Эффективная выборка записей по списку ID
    #35609668
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Дим, ты ухитрился в одной фразе поддержать точки зрения обеих
принципиально не согласных сторон виртуальной дискуссии.

Вообще-то я всего лишь пытался пнуть топикстартера, не желающего
отвечать на вопрос о странной логике выборки записей...
Вот если в форуме по Дельфи встретится человек, который заговорит о
быстром получении ста тысяч записей в грид, ты поинтересуешься у него
"а, собственно, зачем"? Сабж же подразумевает, что пользователь не
только просмотрел эти сто тысяч записей, но и пометил десять тысяч из
них галочкой. Боюсь, что на фоне времени, которое на это было потрачено,
слово "эффективность" теряет всякий смысл.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35609677
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
softwarer
У некоторых людей регулярно используется обратная логика:

Если кто-то не может молотком забить гвоздь в бетонную стену, то из них
плохой: молоток, гвоздь или стена?


молоток, поскольку надо взять монтажный пистолет.
есть способ скормить в список in хоть сто хоть тыщу идентификаторов без ущерба для здоровья сервера, через коллекции. Выше об этом говорилось, только вместо коллекции был ассоциативный массив
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35609681
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer- зрители вообще перестают что-либо понимать в происходящем.

Такой уж ты загадочный ;)
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35609715
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov softwarer
Дим, ты ухитрился в одной фразе поддержать точки зрения обеих
принципиально не согласных сторон виртуальной дискуссии.

Вообще-то я всего лишь пытался пнуть топикстартера,
Я в данном случае говорю исключительно о связавшем нас фрагменте беседы. Я привел некий сценарий, ты в своем ответе фактически сказал, что правы обе стороны этого сценария - при том, что одна из них считает вторую явно неправой и некорректно себя ведущей.

Я вижу в этом некое противоречие.

Dimitry SibiryakovВот если в форуме по Дельфи встретится человек, который заговорит о
быстром получении ста тысяч записей в грид, ты поинтересуешься у него
"а, собственно, зачем"?
Нет, не поинтересуюсь. Я "пну" тех, кто бросится кричать "такое никогда и никому не требуется потому что моя СУБД не может этого сделать".
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35610017
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Вообще-то я всего лишь пытался пнуть топикстартера, не желающего
отвечать на вопрос о странной логике выборки записей...

Логика простая: пользователь видит в гриде много записей, выделяет их и нажимает кнопочку, которая должна хитрым образом обработать выделенные записи. Вделить он их может как несколько, так и все (или почти все), нажав на "*" (инвертирование выделения).

зы: я не считаю, что грузить 10 тыс записей на клиента - это бад дезигн, это удобство. Около 3500 записей, полученные запросом сорока полей из пятнадцати таблиц, грузятся в грид за 2 сек. (это в трёхзвенной архитектуре), далее локально работает грид от DevExpress (сортировка, фильтры по каждой колонке).

зы2: Firebird 2.1 :)
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35610043
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, NickDee!
You wrote on Wed, 22 Oct 08 14:55:58 GMT:

NickDee N> зы: я не считаю, что грузить 10 тыс записей на клиента - это бад дезигн, это удобство.
похоже боржоми пить уже поздно...

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35610179
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee
Вделить он их может как несколько, так и все (или почти все), нажав на
"*" (инвертирование выделения).

В этом случае надо применять NOT IN ().
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35610377
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНет, не поинтересуюсь. Я "пну" тех, кто бросится кричать "такое никогда и никому не требуется потому что моя СУБД не может этого сделать". Честно скажу, если искренне говоришь, то не могу не уважать мнение.

Только давайте вспомним тему топика, если кто забыл (что немудрено). Тема:
автор Эффективная выборка записей по списку ID Много было сломано копий, много выдумано сравнений про "бетон и молоток". Но самое главное осталось за бортом. Я говорю про эффективность . Насколько будет эффективен запрос с предложенными условиями?
Я не то чтобы не умею выражаться аллегориями, но не имею такой склонности. Посему предлагаю просто протестировать запрос с предикатом WHERE ... IN (<до_фига_элементов>). С передачей в виде запроса и с предварительной перекачкой набора IDшников на сервер.
Я не силен в Oracle, но могу сравнить запросы с клиента в Firebird и MSSQL. Адептам Oraсle (и других СУБД) предлагаю провести аналогичный тест.
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35610661
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
В этом случае надо применять NOT IN ().

нужно понимать, что есть ещё и фильтр (как серверный "where", так и локальный).

вот как выглядит эта несложная конструкция на Firebird:
Код: plaintext
1.
2.
3.
select SomeTable.Id, SomeTable.Name
from SomeTable
inner join (select List.Id from List(:IDLIST)) as DT (DTF) on (DT.DTF = SomeTable.Id)
план:
Код: plaintext
1.
PLAN JOIN (LIST NATURAL, SOMETABLE INDEX (PK_SOMETABLE))
вот что есть LIST:
Код: 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.
CREATE PROCEDURE LIST (
    intstr blob)
returns (
    id integer)
as
declare variable i integer;
declare variable listid integer;
declare variable v integer;
declare variable cnt integer;
begin
  listid =  0 ;
  Cnt =  0 ;
  if (CreateIntList(IntStr, ListId, Cnt) <>  1 ) then
    execute procedure RunError('CreateIntList failed');

  I =  0 ;
  while (I < Cnt) do
  begin
    V =  0 ;
    if (ValueInList(ListId, I, V) <>  1 ) then
      execute procedure RunError('ValueInList failed');
    Id = V;
    I = I +  1 ;
    suspend;
  end

  if (FreeList(ListId) <>  1 ) then
    execute procedure RunError('FreeList failed');
end
CreateIntList, ValueInList, FreeList - UDF-функции
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35611292
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee
нужно понимать, что есть ещё и фильтр (как серверный "where", так и
локальный).

Вот к этому-то фильтру и нужно добавлять условие IN/NOT IN. И будет тебе
счастье, поскольку, как сказал Ё!, сервер перейдёт на Range scan, что и
повысит эффективность.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35611939
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
NickDee
нужно понимать, что есть ещё и фильтр (как серверный "where", так и
локальный).

Вот к этому-то фильтру и нужно добавлять условие IN/NOT IN. И будет тебе
счастье, поскольку, как сказал Ё!, сервер перейдёт на Range scan, что и
повысит эффективность.

Во-первых: сложно(читай долго), во-вторых: пока ты у себя что-то фильтровал, другие юзеры уже могли натоптать пачку новых записей, это конечно тоже можно учесть, но мне кажется что несколько десятков миллисекунд сервера можно потратить и на доступ по ID-ам. А может даже такой способ в большинстве случаев эффективней индексированного (и частично неиндексированного) поиска по куче полей (не проверял).
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35612365
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_LНо самое главное осталось за бортом. Я говорю про эффективность . Насколько будет эффективен запрос с предложенными условиями?
Во-первых, автор спрашивал "как эффективнее" - так? Поэтому насчет предложенных условий...

Senya_LПосему предлагаю просто протестировать запрос с предикатом WHERE ... IN (<до_фига_элементов>). С передачей в виде запроса и с предварительной перекачкой набора IDшников на сервер. .. Я не силен в Oracle, ...
"Предварительная перекачка" - это очевидный идиотизм, тестировать который нет нужды. Ну а чтобы удовлетворить Вас... Выборка из десяти миллионов строк одной тысячи (с десятью тысячами принципиальной разницы не будет, но тогда текст sql вылезет за пределы varchar, придется извращаться), сравниваем "список в in" и "передачу коллекции"

Код: 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.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
Connected to Oracle Database 10g Enterprise Edition Release  10 . 1 . 0 . 5 . 0  
Connected as test

SQL> create table some_table as
   2   select rownum id, lpad ('*',  100 , '*') data 
   3   from dual
   4   connect by level <=  10000000 ;

Table created

SQL> alter table some_table add primary key (id);

Table altered

SQL> exec dbms_stats.gather_schema_stats (ownname => user);

PL/SQL procedure successfully completed

SQL> create type TIntTable is table of integer;
   2   /

Type created

SQL> set serveroutput on;
SQL> alter system flush shared_pool;

System altered

SQL> create or replace procedure select_by_where is
   2     stmt varchar2( 32000 ) := 'where id in (';
   3     crSomeTable sys_refcursor;
   4     recSomeTable some_table%rowtype;
   5     t1 timestamp;
   6     t2 timestamp;
   7     t3 timestamp;
   8   begin
   9     for i in  1 .. 999  loop
  10       stmt := stmt ||  5  * i || ', ';
  11     end loop;
  12     stmt := 'select /***1***/ * from some_table ' || stmt || '5000)';
  13     t1 := systimestamp;
  14     open crSomeTable for stmt;
  15     t2 := systimestamp;
  16     loop
  17       fetch crSomeTable into recSomeTable;
  18       exit when crSomeTable%notfound;
  19     end loop;
  20     close crSomeTable;
  21     t3 := systimestamp;
  22     dbms_output.put_line ('Where: open cursor = ' || (t2 - t1));
  23     dbms_output.put_line ('Where: fetch cursor = ' || (t3 - t2));
  24   end;
  25   /

Procedure created

SQL> exec select_by_where;

Where: open cursor = + 000000000   00 : 00 : 00 . 016000000 
Where: fetch cursor = + 000000000   00 : 00 : 00 . 031000000 

PL/SQL procedure successfully completed

SQL> select sql_id from v$sql where sql_text like '%***1***%'  and sql_text not like '%v$sql%';

SQL_ID
-------------
6bhbj6qkbvxjr

SQL> select * from table (dbms_xplan.display_cursor ('6bhbj6qkbvxjr'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID  6bhbj6qkbvxjr, child number  0 
-------------------------------------
select /***1***/ * from some_table where id in ( 5 ,  10 ,  15 ,  20 ,  25 ,  30 ,  35 ,  40 , 

... поскипано ...

Plan hash value:  1666979420 
--------------------------------------------------------------------------------
| Id  | Operation                    | Name         | Rows  | Bytes | Cost (%CPU
--------------------------------------------------------------------------------

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
|    0  | SELECT STATEMENT             |              |       |       |     24  ( 100 
|    1  |  INLIST ITERATOR             |              |       |       |
|    2  |   TABLE ACCESS BY INDEX ROWID| SOME_TABLE   |   1000  |   103K|     24    ( 0 
|*   3  |    INDEX RANGE SCAN          | SYS_C0010485 |   1000  |       |      5    ( 0 
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
    3  - access(("ID"= 5  OR "ID"= 10  OR "ID"= 15  OR "ID"= 20  OR "ID"= 25  OR "ID"= 30  OR

... поскипано ...

 80  rows selected

SQL> create or replace procedure select_by_table is
   2     id_list TIntTable := TIntTable();
   3     cursor crSomeTable (id_list TIntTable) is
   4       select * from some_table where id in (select column_value from table (cast (id_list as TIntTable)));
   5     recSomeTable some_table%rowtype;
   6     t1 timestamp;
   7     t2 timestamp;
   8     t3 timestamp;
   9   begin
  10     id_list.extend ( 1000 );
  11     for i in  1 .. 1000  loop
  12       id_list (i) :=  5  * i;
  13     end loop;
  14     t1 := systimestamp;
  15     open crSomeTable (id_list);
  16     t2 := systimestamp;
  17     loop
  18       fetch crSomeTable into recSomeTable;
  19       exit when crSomeTable%notfound;
  20     end loop;
  21     close crSomeTable;
  22     t3 := systimestamp;
  23     dbms_output.put_line ('Table: open cursor = ' || (t2 - t1));
  24     dbms_output.put_line ('Table: fetch cursor = ' || (t3 - t2));
  25   end;
  26   /

Procedure created

SQL> alter system flush shared_pool;

System altered

SQL> exec select_by_table;

Table: open cursor = + 000000000   00 : 00 : 00 . 031000000 
Table: fetch cursor = + 000000000   00 : 00 : 00 . 016000000 

PL/SQL procedure successfully completed

SQL> select distinct sql_id from v$sql where sql_text like '%TINTTABLE%'  and sql_text not like '%v$sql%';

SQL_ID
-------------
8nv6pst8r1ar4

SQL> select * from table (dbms_xplan.display_cursor ('8nv6pst8r1ar4',  1 ));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID  8nv6pst8r1ar4, child number  1 
-------------------------------------
SELECT * FROM SOME_TABLE WHERE ID IN (SELECT COLUMN_VALUE FROM TABLE (CAST (:B1
TINTTABLE)))
Plan hash value:  3292038186 
--------------------------------------------------------------------------------
| Id  | Operation                           | Name         | Rows  | Bytes | Cos
--------------------------------------------------------------------------------
|    0  | SELECT STATEMENT                    |              |       |       |    5 
|    1  |  NESTED LOOPS                       |              |    255  |  27540  |    5 
|    2  |   SORT UNIQUE                       |              |       |       |
|    3  |    COLLECTION ITERATOR PICKLER FETCH|              |       |       |
|    4  |   TABLE ACCESS BY INDEX ROWID       | SOME_TABLE   |      1  |    106  |
|*   5  |    INDEX UNIQUE SCAN                | SYS_C0010485 |      1  |       |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
    5  - access("ID"=VALUE(KOKBF$))

 23  rows selected

Итого выводы:

Разницы по скорости не заметно


План в эксперименте в целом одинаковый


На этапе построения плана оптимизатору неизвестно количество элементов в коллекции, что приводит к наколеночной оценке количества строк, и как результат, может привести к неоптимальному плану и необходимости использования хинта cardinality
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35612386
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Коллеги - я вполне понимаю, что этот эксперимент можно улучшить и сделать более глубокие выводы.. например таки заметить разницу между range scan и unique scan и отметить поведение оптимизатора. Я здесь не ставлю такой цели, я всего лишь хочу показать, что "сплеча наезжать на перечисление в where" совершенно не обязательно.
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35612998
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в firebird конструкция "in" оказалась крайне не эффективна. Execute time на 1500 ID-шников (это максимум в FB) в 10 раз больше чем если воспользоваться join-ом (300 мс против 30) (Reads from disk to cache = 0)
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35613015
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, NickDee!
You wrote on Thu, 23 Oct 08 15:57:26 GMT:

NickDee N> в firebird конструкция "in" оказалась крайне не эффективна. Execute time на 1500 ID-шников (это максимум в FB)
N> в 10 раз больше чем если воспользоваться join-ом (300 мс против 30) (Reads from disk to cache = 0)
на какой версии?
ибо сие правилось.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35613103
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

последний релизнутый Firebird 2.1.1.17910
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35613117
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, NickDee!
You wrote on Thu, 23 Oct 08 16:56:14 GMT:

NickDee N> последний релизнутый Firebird 2.1.1.17910очень интересно.
и тестовый кейс есть?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35613163
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
и тестовый кейс есть?


Код: 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.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
CREATE TABLE SOMETABLE (
    ID  INTEGER NOT NULL
);

COMMIT;

CREATE PROCEDURE FILL_SOMETABLE
as
declare variable i integer;
begin
  I =  0 ;
  while (I <  10000000 ) do
  begin
    I = I +  1 ;
    insert into sometable (id) values (:I);
  end
end

CREATE PROCEDURE LIST2
returns (
    id integer)
as
declare variable i integer;
begin
  I =  0 ;
  while (I <  1500 ) do
  begin
    I = I +  1 ;
    ID = I* 1000 ;
    suspend;
  end
end

CREATE PROCEDURE GET_BY_JOIN
returns (
    id integer)
as
begin
  for select SomeTable.Id
  from SomeTable
  inner join (select List2.Id from List2) as DT (DTF) on (DT.DTF = SomeTable.Id)
  into :id
  do
  begin
    suspend;
  end
end

CREATE PROCEDURE GET_BY_IN
returns (
    id integer)
as
begin
  for select Id
  from SomeTable
  -- тут в in 1499 элементов (можно откуда-нить скопипастить :)
  where id in ( 2000 , 3000 , 4000 , 5000 , 6000 , 7000 , 8000 , 9000 , 10000 , 11000 , .., 1500000 )
  into :id
  do
  begin
    suspend;
  end
end

COMMIT;

EXECUTE PROCEDURE FILL_SOMETABLE;

COMMIT;

ALTER TABLE SOMETABLE ADD CONSTRAINT PK_SOMETABLE PRIMARY KEY (ID);
COMMIT;

В процедурке GET_BY_IN нужно заполнить 1500 элементов в "IN" :)
EXECUTE PROCEDURE FILL_SOMETABLE - встявляет 10 миллионов записей (около минуты)
Процедурку List заменил на List2, для простоты.
Дальше можно открывать процедурки GET_BY_JOIN и GET_BY_IN в IBExpert-e и запускать их с фетчем(execute and fetch all) и сравнивать результаты
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35613790
Микросекунда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee пишет:

N> Автор: NickDee
N> в firebird конструкция "in" оказалась крайне не
N> эффективна. Execute time на 1500 ID-шников (это максимум в
N> FB) в 10 раз больше чем если воспользоваться join-ом (300
N> мс против 30) (Reads from disk to cache = 0)

Попробовал твой пример:
78 мс против 280 мс на FB 2.0.3
125 против 460 на 2.1.0 (другая машина, хилая совсем)

соотношение 1:4 примерно, но не 1:10
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Эффективная выборка записей по списку ID
    #35614055
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МикросекундаNickDee пишет:

N> Автор: NickDee
N> в firebird конструкция "in" оказалась крайне не
N> эффективна. Execute time на 1500 ID-шников (это максимум в
N> FB) в 10 раз больше чем если воспользоваться join-ом (300
N> мс против 30) (Reads from disk to cache = 0)

Попробовал твой пример:
78 мс против 280 мс на FB 2.0.3
125 против 460 на 2.1.0 (другая машина, хилая совсем)

соотношение 1:4 примерно, но не 1:10


размер страницы 16K

IN:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
------ Performance info ------
Prepare time = 0ms
Execute time = 297ms
Avg fetch time =  0 , 20  ms
Current memory =  342   357   556 
Max memory =  342   508   284 
Memory buffers =  20   480 
Reads from disk to cache =  0 
Writes from cache to disk =  0 
Fetches from cache =  8   999 
JOIN:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
------ Performance info ------
Prepare time = 0ms
Execute time = 16ms
Avg fetch time =  0 , 01  ms
Current memory =  342   371   496 
Max memory =  342   522   280 
Memory buffers =  20   480 
Reads from disk to cache =  0 
Writes from cache to disk =  0 
Fetches from cache =  9   005 
...
Рейтинг: 0 / 0
20 сообщений из 70, страница 3 из 3
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Эффективная выборка записей по списку ID
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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