|
|
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Всем привет. Такой вопрос -SQL Tuning Results выдал следующее замечание: Код: sql 1. Сам запрос выборки выглядит с условием: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. как правильно переписать условие для AND D.ST_ST_ID != 7 , чтобы работал индекс? Версия Оракла - Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 08:00 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
trace.log, А Вы уверены, что Вам нужно заставить работать индекс именно по "всё множество, кроме"? Особенно при наличии фильтра по дате. Покажите план запроса и ddl таблиц и индексов - будет проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 09:25 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
env, хотелось бы усекать аннулированные документы, состояние = 7 (аннулировано), вернее сказать, чтобы они в выборку не попадали. Если перечислить все состояния, которые должны попасть в выборку, это желаемого результата тоже не принесет же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 11:33 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
trace.log, сказать, чтобы они в выборку не попадали Именно это и делает Ваша конструкция. Применение индекса на это условие отсечки имело бы хоть какой-то смысл, если бы у Вас бОльшая часть документов была аннулирована. Тогда можно ввести признак типа is_active и фильтровать по нему. В противном случае Вы, грубо говоря, сообщаете оптимизатору, что Вам надо 95% данных из 100%. И оптимизатор вполне резонно считает, что использование индекса в такой ситуации бесполезно. Покажите план запроса и ddl имеющихся индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 11:51 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
env, вопрос скорее в том, почему SQL Tuning Results выдал следующее замечание? ps для <>7 можно сделать FBI индекс, токо вот зачем .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 12:22 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
env, Код: 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. DDL индексов таблицы документов: Код: sql 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. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 12:23 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Stax, могу убрать условие и посмотреть как пойдет процесс, если выигрыш будет значительным, значит оставлю так, но в выборку допилю статус документа, благо их немного должно быть, но думал, что отптимизатор можно как-то обмануть без всяких пересозданий индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 12:28 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
trace.log, У Вас так много индексов, что добавить еще один (decode(ST_ST_ID,7,null,0)) не должно стать проблемой если "удаленных" документов относительно немного, то я не вижу смысла в індексе ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 12:41 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Stax, идея понятна, посмотрю, что удасться выиграть, если это условие вообще убрать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 13:01 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
trace.logStax, идея понятна, посмотрю, что удасться выиграть, если это условие вообще убрать. думаю оптимизатору мозгов хватит остаться на индексе по дате )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 13:02 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Stax если "удаленных" документов относительно немного, то я не вижу смысла в індексе ..... stax Скорее всего там вторичный ключ проиндексирован ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 13:32 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
DВАtrace.logStax, идея понятна, посмотрю, что удасться выиграть, если это условие вообще убрать. думаю оптимизатору мозгов хватит остаться на индексе по дате )) мож index_combine занюхает ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 13:56 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
SELECT /*+ INDEX(v.e2.e3 emp_job_ix) */ * FROM v; https://docs.oracle.com/cd/B19306_01/server.102/b14211/hintsref.htm#i27644 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 14:24 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
trace.log Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. как правильно переписать условие для AND D.ST_ST_ID != 7, чтобы работал индекс? Чтобы работал(-и) индекс(-ы) (по отдельности) , вот так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 19:49 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Вот так правильно: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 20:19 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
спасибо всем. после того как убрал условие, SQL Tuning Results выдал следующее: нет рекомендаций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 08:53 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
Fogel, Нет опасения, что Код: plsql 1. 2. 3. 4. 5. 6. 7. вызовет фулскан doc_texts и материализацию в temp? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 08:57 |
|
||
|
Оптимизация
|
|||
|---|---|---|---|
|
#18+
envFogel, Нет опасения, что Код: plsql 1. 2. 3. 4. 5. 6. 7. вызовет фулскан doc_texts и материализацию в temp? Нет. План запроса, который привели, показал, что oracle строит его, считая, что в этой таблице согласно условию отбора существенно меньше данных (при том, что из второй таблицы берётся почти всё): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ну а дальше уже реальная кардинальность расставит всё по своим местам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2017, 18:53 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=149&tid=1885379]: |
0ms |
get settings: |
13ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 271ms |
| total: | 397ms |

| 0 / 0 |
