powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка по неселективному индексу
8 сообщений из 8, страница 1 из 1
Сортировка по неселективному индексу
    #39404421
gandalf-the-grey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго! Подскажите, нормально ли такое поведение.
Есть табличка пусть нексколько тысяч записей, по col2 индекс, малоселективный (3-4 значения)

Есть 3 запроса:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
1.
select rownum rn, trowid
from (select rowid trowid
from table1
where 1 = 1
order by col2)
2.
select rownum rn, trowid
from (select rowid trowid
from table1
where 1 = 1
order by col2)
where rownum <= &l_to_line
3.
select rownum rn, trowid
from (select rowid trowid
from table1
where 1 = 1
order by col2, rowid)
where rownum <= &l_to_line



Так вот запросы 1 и 2 возвращают РАЗНЫЕ rowid в первых строках. Если добавить rowid в сортировку - всё становится нормально ессно.
...
Рейтинг: 0 / 0
Сортировка по неселективному индексу
    #39404446
gandalf-the-grey, а кто обещал доставать строки с одинаковыми col2 в одном и том же порядке?
...
Рейтинг: 0 / 0
Сортировка по неселективному индексу
    #39404561
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gandalf-the-greyТак вот запросы 1 и 2 возвращают РАЗНЫЕ rowid в первых строках.Результаты упорядочены по col2? - А большего ты не просил.
...
Рейтинг: 0 / 0
Сортировка по неселективному индексу
    #39404842
gandalf-the-grey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

Да, я вчера слишком абстрагировался от конкретной проблемы, которая заключается в следующем:

реализую поиск неких данных по произвольному набору параметров с последующим постраничным отображением с сортировкой, воспользовавшись советами коллег с форума, за что им большое спасибо
про параметры
про пейджинг
И всё бы хорошо, но когда поле сортировки "неудачное" - получается фигня.
Неудачное - в смысле что оптимизатор выбирает TABLE ACCESS FULL
При выбраном методе доступа для запроса типа
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select --+FIRST_ROWS(100) --+gather_plan_statistics --a2
rn, trowid 
from (select rownum rn, trowid
from (select t.rowid trowid
from ref_terminals t
where 1 = 1
order by t.current_state)
where rownum <= &l_to_line)
where rn >= &l_from_line
and rownum <= &l_to_line - &l_from_line + 1


с планом
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                 | Name          | Starts | E-Rows |E-Bytes|E-Temp | Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers | Reads  |  OMem |  1Mem |  O/1/M   |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT          |               |      1 |        |       |       | 23276 (100)|          |    100 |00:00:01.84 |   46073 |      2 |       |       |          |
|*  1 |  COUNT STOPKEY            |               |      1 |        |       |       |            |          |    100 |00:00:01.84 |   46073 |      2 |       |       |          |
|*  2 |   VIEW                    |               |      1 |    400 | 10000 |       | 23276   (1)| 00:04:40 |    100 |00:00:01.84 |   46073 |      2 |       |       |          |
|*  3 |    COUNT STOPKEY          |               |      1 |        |       |       |            |          |    400 |00:00:01.84 |   46073 |      2 |       |       |          |
|   4 |     VIEW                  |               |      1 |   1984K|    22M|       | 23276   (1)| 00:04:40 |    400 |00:00:01.84 |   46073 |      2 |       |       |          |
|*  5 |      SORT ORDER BY STOPKEY|               |      1 |   1984K|    30M|    45M| 23276   (1)| 00:04:40 |    400 |00:00:01.84 |   46073 |      2 | 36864 | 36864 |     1/0/0|
|   6 |       TABLE ACCESS FULL   | REF_TERMINALS |      1 |   1984K|    30M|       | 12731   (1)| 00:02:33 |   1984K|00:00:01.26 |   46073 |      2 |       |       |          |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Получается казус, что в некоторых диапазонах значений переменных номеров записей возвращаются ОДНИ и ТЕ ЖЕ ROWID
Т.е., например, для диапазонов 201-300 и 501-600 в моём случае возвращается один набор ROWID (но с разными RN).

Можно как-то избежать этого, кроме как создавать условия для того, чтобы первым шагом всегда был INDEX SCAN?
...
Рейтинг: 0 / 0
Сортировка по неселективному индексу
    #39405030
gandalf-the-grey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм... Я озадачен. Помогите, пожалуйста, решить шараду...
Первые два кейса, одинаковый запрос, разные переменные - индекс используется, но пейджинг возвращает одинаковые данные для нескольких разных страниц.

Третий вариант работает корректно для всех страниц.

Разница в INDEX FAST FULL SCAN против INDEX FULL SCAN
FAST FULL не гарантирует порядок чтения блоков в отличие от просто FULL

Как-то можно заставить его в общем случае ВСЕГДА использовать FULL INDEX SCAN?
Или нужно применить какие-то другие техники, когда нужно постраничное отображение с сортировкой, причем сортировка может быть по полю, содержащее одинаковые значения для всего возвращенного набора?

Код: plsql
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.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
select --+FIRST_ROWS(100) --+gather_plan_statistics --a3
rn, trowid
from (select rownum rn, trowid
from (select t.rowid trowid
from ref_terminals t,
     ref_lookup_codes l
where 1 = 1
and l.lookup_name = 'TERM_STATES'
and l.num_value = t.current_state
order by l.lookup_value
)
where rownum <= &l_to_line)
where rn >= &l_from_line

для 401-500

SQL_ID  6f3gqs718j99b, child number 0
-------------------------------------
select --+FIRST_ROWS(100) --+gather_plan_statistics --a3 rn, trowid 
from (select rownum rn, trowid from (select t.rowid trowid from 
ref_terminals t,      ref_lookup_codes l where 1 = 1 and l.lookup_name 
= 'TERM_STATES' and l.num_value = t.current_state order by 
l.lookup_value ) where rownum <= 500) where rn >= 401

Plan hash value: 1167343809

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                        | Name                 | Starts | E-Rows |E-Bytes|E-Temp | Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |  OMem |  1Mem |  O/1/M   |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                 |                      |      3 |        |       |       | 20695 (100)|          |    300 |00:00:04.74 |   17421 |       |       |          |
|*  1 |  VIEW                            |                      |      3 |    500 | 12500 |       | 20695   (1)| 00:04:09 |    300 |00:00:04.74 |   17421 |       |       |          |
|*  2 |   COUNT STOPKEY                  |                      |      3 |        |       |       |            |          |   1500 |00:00:04.74 |   17421 |       |       |          |
|   3 |    VIEW                          |                      |      3 |   1403K|    16M|       | 20695   (1)| 00:04:09 |   1500 |00:00:04.74 |   17421 |       |       |          |
|*  4 |     SORT ORDER BY STOPKEY        |                      |      3 |   1403K|    74M|    86M| 20695   (1)| 00:04:09 |   1500 |00:00:04.74 |   17421 | 48128 | 48128 |     2/0/0|
|*  5 |      HASH JOIN                   |                      |      3 |   1403K|    74M|       |  1573   (1)| 00:00:19 |   5952K|00:00:03.45 |   17421 |  1483K|  1483K|     3/0/0|
|*  6 |       TABLE ACCESS BY INDEX ROWID| REF_LOOKUP_CODES     |      3 |      7 |   280 |       |     3   (0)| 00:00:01 |     24 |00:00:00.01 |       9 |       |       |          |
|*  7 |        INDEX RANGE SCAN          | REF_LOOKUP_CODES_UK1 |      3 |      8 |       |       |     2   (0)| 00:00:01 |     24 |00:00:00.01 |       6 |       |       |          |
|   8 |       INDEX FAST FULL SCAN       | REF_TERMINALS_STATE  |      3 |   1984K|    30M|       |  1565   (1)| 00:00:19 |   5952K|00:00:00.96 |   17412 |       |       |          |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$2 / from$_subquery$_001@SEL$1
   2 - SEL$2
   3 - SEL$3 / from$_subquery$_002@SEL$2
   4 - SEL$3
   6 - SEL$3 / L@SEL$3
   7 - SEL$3 / L@SEL$3
   8 - SEL$3 / T@SEL$3

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('11.2.0.4')
      DB_VERSION('11.2.0.4')
      OPT_PARAM('_b_tree_bitmap_plans' 'false')
      FIRST_ROWS(100)
      OUTLINE_LEAF(@"SEL$3")
      OUTLINE_LEAF(@"SEL$2")
      OUTLINE_LEAF(@"SEL$1")
      NO_ACCESS(@"SEL$1" "from$_subquery$_001"@"SEL$1")
      NO_ACCESS(@"SEL$2" "from$_subquery$_002"@"SEL$2")
      INDEX_RS_ASC(@"SEL$3" "L"@"SEL$3" ("REF_LOOKUP_CODES"."LOOKUP_NAME" "REF_LOOKUP_CODES"."LOOKUP_CODE"))
      INDEX_FFS(@"SEL$3" "T"@"SEL$3" ("REF_TERMINALS"."CURRENT_STATE"))
      LEADING(@"SEL$3" "L"@"SEL$3" "T"@"SEL$3")
      USE_HASH(@"SEL$3" "T"@"SEL$3")
      END_OUTLINE_DATA
  */

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("RN">=401)
   2 - filter(ROWNUM<=500)
   4 - filter(ROWNUM<=500)
   5 - access("L"."NUM_VALUE"="T"."CURRENT_STATE")
   6 - filter("L"."NUM_VALUE" IS NOT NULL)
   7 - access("L"."LOOKUP_NAME"='TERM_STATES')

Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - "RN"[NUMBER,22], "TROWID"[ROWID,10]
   2 - "TROWID"[ROWID,10], ROWNUM[4]
   3 - "TROWID"[ROWID,10]
   4 - (#keys=1) "L"."LOOKUP_VALUE"[VARCHAR2,100], "T".ROWID[ROWID,10]
   5 - (#keys=1) "L"."LOOKUP_VALUE"[VARCHAR2,100], "T".ROWID[ROWID,10]
   6 - "L"."LOOKUP_VALUE"[VARCHAR2,100], "L"."NUM_VALUE"[NUMBER,22]
   7 - "L".ROWID[ROWID,10]
   8 - "T".ROWID[ROWID,10], "T"."CURRENT_STATE"[NUMBER,22]

401         AAAaP9AAFAACE3VAAi
402         AAAaP9AAFAACE3OAAU
403         AAAaP9AAFAACE3LAAc
…


Для 101-200

SQL_ID  bq426nmxty62c, child number 0
-------------------------------------
select --+FIRST_ROWS(100) --+gather_plan_statistics --a3 rn, trowid 
from (select rownum rn, trowid from (select t.rowid trowid from 
ref_terminals t,      ref_lookup_codes l where 1 = 1 and l.lookup_name 
= 'TERM_STATES' and l.num_value = t.current_state order by 
l.lookup_value ) where rownum <= 200) where rn >= 101

Plan hash value: 1167343809

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                        | Name                 | Starts | E-Rows |E-Bytes|E-Temp | Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |  OMem |  1Mem |  O/1/M   |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                 |                      |      1 |        |       |       | 20695 (100)|          |    100 |00:00:01.65 |    5807 |       |       |          |
|*  1 |  VIEW                            |                      |      1 |    200 |  5000 |       | 20695   (1)| 00:04:09 |    100 |00:00:01.65 |    5807 |       |       |          |
|*  2 |   COUNT STOPKEY                  |                      |      1 |        |       |       |            |          |    200 |00:00:01.65 |    5807 |       |       |          |
|   3 |    VIEW                          |                      |      1 |   1403K|    16M|       | 20695   (1)| 00:04:09 |    200 |00:00:01.65 |    5807 |       |       |          |
|*  4 |     SORT ORDER BY STOPKEY        |                      |      1 |   1403K|    74M|    86M| 20695   (1)| 00:04:09 |    200 |00:00:01.65 |    5807 | 13312 | 13312 |     1/0/0|
|*  5 |      HASH JOIN                   |                      |      1 |   1403K|    74M|       |  1573   (1)| 00:00:19 |   1984K|00:00:01.20 |    5807 |  1483K|  1483K|     1/0/0|
|*  6 |       TABLE ACCESS BY INDEX ROWID| REF_LOOKUP_CODES     |      1 |      7 |   280 |       |     3   (0)| 00:00:01 |      8 |00:00:00.01 |       3 |       |       |          |
|*  7 |        INDEX RANGE SCAN          | REF_LOOKUP_CODES_UK1 |      1 |      8 |       |       |     2   (0)| 00:00:01 |      8 |00:00:00.01 |       2 |       |       |          |
|   8 |       INDEX FAST FULL SCAN       | REF_TERMINALS_STATE  |      1 |   1984K|    30M|       |  1565   (1)| 00:00:19 |   1984K|00:00:00.33 |    5804 |       |       |          |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$2 / from$_subquery$_001@SEL$1
   2 - SEL$2
   3 - SEL$3 / from$_subquery$_002@SEL$2
   4 - SEL$3
   6 - SEL$3 / L@SEL$3
   7 - SEL$3 / L@SEL$3
   8 - SEL$3 / T@SEL$3

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('11.2.0.4')
      DB_VERSION('11.2.0.4')
      OPT_PARAM('_b_tree_bitmap_plans' 'false')
      FIRST_ROWS(100)
      OUTLINE_LEAF(@"SEL$3")
      OUTLINE_LEAF(@"SEL$2")
      OUTLINE_LEAF(@"SEL$1")
      NO_ACCESS(@"SEL$1" "from$_subquery$_001"@"SEL$1")
      NO_ACCESS(@"SEL$2" "from$_subquery$_002"@"SEL$2")
      INDEX_RS_ASC(@"SEL$3" "L"@"SEL$3" ("REF_LOOKUP_CODES"."LOOKUP_NAME" "REF_LOOKUP_CODES"."LOOKUP_CODE"))
      INDEX_FFS(@"SEL$3" "T"@"SEL$3" ("REF_TERMINALS"."CURRENT_STATE"))
      LEADING(@"SEL$3" "L"@"SEL$3" "T"@"SEL$3")
      USE_HASH(@"SEL$3" "T"@"SEL$3")
      END_OUTLINE_DATA
  */

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("RN">=101)
   2 - filter(ROWNUM<=200)
   4 - filter(ROWNUM<=200)
   5 - access("L"."NUM_VALUE"="T"."CURRENT_STATE")
   6 - filter("L"."NUM_VALUE" IS NOT NULL)
   7 - access("L"."LOOKUP_NAME"='TERM_STATES')

Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - "RN"[NUMBER,22], "TROWID"[ROWID,10]
   2 - "TROWID"[ROWID,10], ROWNUM[4]
   3 - "TROWID"[ROWID,10]
   4 - (#keys=1) "L"."LOOKUP_VALUE"[VARCHAR2,100], "T".ROWID[ROWID,10]
   5 - (#keys=1) "L"."LOOKUP_VALUE"[VARCHAR2,100], "T".ROWID[ROWID,10]
   6 - "L"."LOOKUP_VALUE"[VARCHAR2,100], "L"."NUM_VALUE"[NUMBER,22]
   7 - "L".ROWID[ROWID,10]
   8 - "T".ROWID[ROWID,10], "T"."CURRENT_STATE"[NUMBER,22]

101         AAAaP9AAFAACE3VAAi
102         AAAaP9AAFAACE3OAAU
103         AAAaP9AAFAACE3LAAc
…


SQL_ID  0st7u3jxs8tq4, child number 0
-------------------------------------
select --+FIRST_ROWS(100) --+gather_plan_statistics --a4
rn, trowid 
from (select rownum rn, trowid
from (select t.rowid trowid
from ref_terminals t
where 1 = 1
order by t.current_state) 
where rownum <= 200)
where rn >= 101

Plan hash value: 1181353452

------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation          | Name                | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |                     |      1 |        |       |     3 (100)|          |    100 |00:00:00.01 |       3 |
|*  1 |  VIEW              |                     |      1 |    100 |  2500 |     3   (0)| 00:00:01 |    100 |00:00:00.01 |       3 |
|*  2 |   COUNT STOPKEY    |                     |      1 |        |       |            |          |    200 |00:00:00.01 |       3 |
|   3 |    VIEW            |                     |      1 |    100 |  1200 |     3   (0)| 00:00:01 |    200 |00:00:00.01 |       3 |
|   4 |     INDEX FULL SCAN| REF_TERMINALS_STATE |      1 |   1984K|    30M|     3   (0)| 00:00:01 |    200 |00:00:00.01 |       3 |
------------------------------------------------------------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$2 / from$_subquery$_001@SEL$1
   2 - SEL$2
   3 - SEL$3 / from$_subquery$_002@SEL$2
   4 - SEL$3 / T@SEL$3

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('11.2.0.4')
      DB_VERSION('11.2.0.4')
      OPT_PARAM('_b_tree_bitmap_plans' 'false')
      FIRST_ROWS(100)
      OUTLINE_LEAF(@"SEL$3")
      OUTLINE_LEAF(@"SEL$2")
      OUTLINE_LEAF(@"SEL$1")
      NO_ACCESS(@"SEL$1" "from$_subquery$_001"@"SEL$1")
      NO_ACCESS(@"SEL$2" "from$_subquery$_002"@"SEL$2")
      INDEX(@"SEL$3" "T"@"SEL$3" ("REF_TERMINALS"."CURRENT_STATE"))
      END_OUTLINE_DATA
  */

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("RN">=101)
   2 - filter(ROWNUM<=200)

Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - "RN"[NUMBER,22], "TROWID"[ROWID,10]
   2 - "TROWID"[ROWID,10], ROWNUM[4]
   3 - "TROWID"[ROWID,10]
   4 - "T".ROWID[ROWID,10]
...
Рейтинг: 0 / 0
Сортировка по неселективному индексу
    #39405047
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gandalf-the-greyпричем сортировка может быть по полю, содержащее одинаковые значения для всего возвращенного набора?Детерминировать сортировку.
...
Рейтинг: 0 / 0
Сортировка по неселективному индексу
    #39405246
gandalf-the-grey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elicgandalf-the-greyпричем сортировка может быть по полю, содержащее одинаковые значения для всего возвращенного набора?Детерминировать сортировку.
В каком смысле? Если добавить условия с сортировку, то вариант, я так понимаю, по каждому полю, по которому возможна сортировка, создавать индекс, дополнительно "детерминированный" чем-нибудь типа PK.
Только, мне кажется, это не решит проблему, когда таблица сортируется по значению внешнего лукапа, как в моем примере.
Это в любом случае приведет либо к TABLE ACCESS FULL, либо к INDEX FAST FULL SCAN основной таблицы-источника с последующей сортировкой. Это решит задачу отображения уникальных строк на разных страницах, но нивелирует то, что нужно для пейджинга: скорость при COUNT STOPKEY на INDEX FULL SCAN

А с сортировкой по собственным полям, имеющим NOT NULL или индекс с nvl() проблем и так не будет.

М.б. индексы на соединения? Или я ещё что-то упускаю?

Спасибо.
...
Рейтинг: 0 / 0
Сортировка по неселективному индексу
    #39405406
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gandalf-the-greyнивелирует то, что нужно для пейджинга: скоростьДо сих пор ты жаловался только на недетерминизм. Уж выбирай: шашечки или ехать.
gandalf-the-greyпо каждому полю, по которому возможна сортировка, создавать индексИдиотизм. Табличка только ради остраничивания? - Так не бывает.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка по неселективному индексу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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