|
Проблема с substr?
|
|||
---|---|---|---|
#18+
В принципе, я получил ответ на свой вопрос. Всем спасибо за помощь и пояснения. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2008, 11:41 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Евгений ФадеевЖуравлев Денис2faceДо этого работал с ораклом и там все было нормально, даже при работе с таблицами с большим количеством записей.В этом месте информикс лучше оракла в несколько раз.Речь про форум или про большие таблицы? Если первое - то не в несколько раз, а в принципе. Если про второе - спорно :)) Если Вас не устраивает функциональность substr или поиск по LIKE - тогда можно использовать технологию DataBlade - IBM INFORMIX EXCALIBUR TEXT SEARCH DATABLADE MODULE или бесплатный поисковый datablade для версии 11.x С уважением, Вадим ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2008, 12:28 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Внимательно посмотрел (дошли руки) 1 запрос substr (1) Index Keys: cmfo cacc currency dtend (Key-First) (Serial, fragments: ALL) Lower Index Filter: informix.payord.cmfo = informix.config_getkey('MFO' ,'COMMON' ) Index Key Filters: (informix.payord.dtend >= 01/03/2008 ) AND (informix.payord.dtend <= 31/03/2008 ) 2 запрос (1) Index Keys: cmfo cacc currency dtend (Key-First) (Serial, fragments: ALL) Lower Index Filter: (informix.payord.cacc[1,4] = '6010' AND informix.payord.cmfo = informix.config_getkey('MFO' ,'COMMON' )) Index Key Filters: (informix.payord.dtend >= 01/03/2008 ) AND (informix.payord.dtend <= 31/03/2008 ) имеем индекс --- cmfo cacc currency dtend безумие, предиката с currency вообще в запросе нет, значит сканируется часть индекса лишняя. Т.е. запрос потенциально можно ускорить еще и еще, если сделать "правильный" индекс или правильно фрагментировать существующий индескс. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2008, 12:57 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Индексы в таблицах создала программерская контора, которая написала "замечательную" АБС Profix. Айтишники ничего исправлять или добавлять не будут. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2008, 13:57 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
2faceИндексы в таблицах создала программерская контора, которая написала "замечательную" АБС Profix. Айтишники ничего исправлять или добавлять не будут.а фиг ли вы тогда запросы сами пишите? Естественно они работают плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2008, 14:22 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
База создана под банковскую систему профикс. Соответственно под их потребности, в плане построения отчетов и вывода информации. Но тех возможностей, которые предоставляет профикс, недостаточно. Вот и приходится мне писать различные выборки. До этого я работал с ораклом и там изначально была правильно спроектированная база. Вот поэтому я и задал вопрос, чтобы выяснить в чем проблема: информиксе или в структуре базы. Выяснилось, что в структуре. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2008, 17:21 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Они это пишут, поскольку им дали такую возможность. Ничего зазорного в этом нет, в крупнейшем мировом Банке (вернее в его маленькой украинской дочке) целая плеяда главбухов этим в Экселе балуется уже лет 10. Кстати насчет совета по currency, рекомендую прислушаться и явно указать, поскольку по счетам доходов операций с валютой отличной от 980 все равно не происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2008, 17:24 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Папрашу птичку, а именно структуру ProFIX/ODB не пенять. Пеняйте на свои запросы и не знание особенностей системы. Я ее (структуру) не видел лет так 6, но судя по вашим запросам она не сильно изменилась. Из всех банковских систем, которые я видел (включая с десяток западных и десятка два украинских) - лучшая. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2008, 17:33 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Daugava Я ее (структуру) не видел лет так 6, но судя по вашим запросам она не сильно изменилась. Из всех банковских систем, которые я видел (включая с десяток западных и десятка два украинских) - лучшая. substr(cacc,1,4) in (6010,6011,6012,6013,6014,6015,6016,6017,6018) номер счета протаскивать в таблицу проводок я бы не стал (но я вообще суррогато-пурист), хотя так делают все, но гемора из-за этого ойёй, и задрали эти ограничения по балансовым группам захардкоженные в тысяче и одной мест. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2008, 17:52 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
DaugavaПапрашу птичку, а именно структуру ProFIX/ODB не пенять. Пеняйте на свои запросы и не знание особенностей системы. Я ее (структуру) не видел лет так 6, но судя по вашим запросам она не сильно изменилась. Из всех банковских систем, которые я видел (включая с десяток западных и десятка два украинских) - лучшая. Я сожалею, если это лучшая АБС, с которой Вы работали. Это самая убогая и ограниченная АБС. Правда я работал всего с 5 системами. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2008, 17:58 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Журавлев ДенисТ.е. запрос потенциально можно ускорить еще и еще, если сделать "правильный" индекс или правильно фрагментировать существующий индескс. Под "фрагментировать индекс" вы имеете в виду разнести части индекса по разным дискам? Что обычно выгоднее: собрать диски в raid 0 или фрагментировать самые затребованные таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2008, 22:38 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
2faceЯ сожалею, если это лучшая АБС, с которой Вы работали. Я не говорил, что это лучшая АБС это был бы уже полный оффтоп, я сказал, что у нее лучшая структура БД :). Кроме того, я не говорил, что я с ней работал, просто по роду работ приходилось конвертировать данные в/из самые различные системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2008, 10:14 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Насчет структуры БД я бы тоже поспорил. Часть таблиц "перегружены" лишними полями, некоторые очевидные связи сделаны мягко говоря странно. Индексы в таблицах, возможно, были созданы только под нужды Профикса. А т.к. набор инструментов ограничен, то возникают проблемы со скоростью выборки. До этого я работал с ораклами 9 и 10 и мссервером. Там таких проблем не было, потому что были грамотно спроектированы БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2008, 12:03 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Проектировать индексы под "другие задачи" - обязанность админа БД, а не разработчика. Да и вообще заниматься фрагментацией по условиям надо именно на конкретной инсталляции. Поскольку это все таки более менее коробочный продукт, заточенный под среднюю температуру по больнице и то, что будет хорошо Клиенту А, будет абсолютно не примлемо Клиентом Б. Знаю я вашего "Оракла", выросшего из штанишек Интербейса, но справедливости ради его базу за вымя я не щупал, врать не буду. По "МСсерверу" - есть дельные вещи, но если бы не побег в Канаду-Штаты отцов основателей, я бы их уже задушил, как минимум за структуру ConnotationValues. Кроме того, стоит учесть, что в отличие от приводимых вами двух основных конкурентов структура БД Профикса значительно старше и пережила изменение плана счетов в 98-году. Может я и ошибся в предположениях по конкретным разработчикам, но это врядли, поскольку узок круг широкораспространненых банковских АБС в Украине. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2008, 12:53 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
bk0010Журавлев ДенисТ.е. запрос потенциально можно ускорить еще и еще, если сделать "правильный" индекс или правильно фрагментировать существующий индескс. Под "фрагментировать индекс" вы имеете в виду разнести части индекса по разным дискам? Что обычно выгоднее: собрать диски в raid 0 или фрагментировать самые затребованные таблицы? Фрагментирование + PDQPRIORITY>=1 в 80% случаев будет быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2008, 20:42 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
onstatФрагментирование + PDQPRIORITY>=1 в 80% случаев будет быстрее. Спасибо. А Mirroring тоже до сих пор актуален или лучше делать RAID 1? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2008, 21:00 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
bk0010Под "фрагментировать индекс" вы имеете в виду разнести части индекса по разным дискам?Что обычно выгоднее: собрать диски в raid 0 или фрагментировать самые затребованные таблицы?фрагментировать -- разбить на куски. Все валим на один рейд, никаких дисков. Создаем табличку create table test_entry(acc char(20), adate date, sum decimal(20,2)) in speedtest; Наполняем execute procedure fill_te(100000); select count(*) from test_entry; 1311763 update statistics high for table test_entry; Мучать будем запрос Код: plaintext 1. 2.
Создаю хороший индекс create index ixte1 on test_entry(acc,adate) in speedtest; Estimated Cost: 31 Код: 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.
Создаем индекс фрагментированный c partition create index ixte1 on test_entry(acc) fragment by expression partition p12007 adate >= '01.01.2007' and adate < '01.04.2007' in speedtest, partition p22007 adate >= '01.04.2007' and adate < '01.07.2007' in speedtest, partition p32007 adate >= '01.07.2007' and adate < '01.10.2007' in speedtest, partition p42007 adate >= '01.10.2007' and adate < '01.01.2008' in speedtest, partition p12008 adate >= '01.01.2008' and adate < '01.04.2008' in speedtest, partition p22008 adate >= '01.04.2008' and adate < '01.07.2008' in speedtest, partition p32008 adate >= '01.07.2008' and adate < '01.10.2008' in speedtest, partition p42008 adate >= '01.10.2008' and adate < '01.01.2009' in speedtest; Estimated Cost: 103 Код: 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.
create index ixte1 on test_entry(acc) in speedtest; Estimated Cost: 645 Код: 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.
без индекса Estimated Cost: 51967 Код: 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.
хреновый индекс create index ixte1 on test_entry(acc, sum, adate) in speedtest; Estimated Cost: 34 Код: 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.
наполнял так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
тест получился плохой, дата одинаковая, и работает похоже все несколько иначе. Т.е. при фрагментированном индексе почему-то нет KEY-ONLY , зачем-то ходит в таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2008, 22:28 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Это батенька зря ... Создаем индекс фрагментированный c partition create index ixte1 on test_entry(acc) fragment by expression partition p12007 adate >= '01.01.2007' and adate < '01.04.2007' in speedtest, partition p22007 adate >= '01.04.2007' and adate < '01.07.2007' in speedtest, partition p32007 adate >= '01.07.2007' and adate < '01.10.2007' in speedtest, partition p42007 adate >= '01.10.2007' and adate < '01.01.2008' in speedtest, partition p12008 adate >= '01.01.2008' and adate < '01.04.2008' in speedtest, partition p22008 adate >= '01.04.2008' and adate < '01.07.2008' in speedtest, partition p32008 adate >= '01.07.2008' and adate < '01.10.2008' in speedtest, partition p42008 adate >= '01.10.2008' and adate < '01.01.2009' in speedtest; Попробуй фрагментировать индекс не для одного partition, а для нескольких db-пространств (in speedtest1, in speedtest2, in speedtest3, in speedtest4 и т.д) !!! С уважением, Вадим. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2008, 23:39 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
а теперь про умненького оракла который умеет substr Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
тупим однако, переписываю в like. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2008, 09:23 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
GVF112GVFЭто батенька зря ... почему? GVF112GVF Попробуй фрагментировать индекс не для одного partition, а для нескольких db-пространств (in speedtest1, in speedtest2, in speedtest3, in speedtest4 и т.д) !!!и зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2008, 20:51 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Журавлев Дениси зачем? Возможно если заставить грузиться куски индекса с разных дисков одновременно, то это позволит улучшить те удручающие результаты, которые вы привели выше. Хотя, скорее всего, скорость выполнения увеличится только если саму таблицу разнести по дискам, но стоимость запроса при этом уменьшится вряд ли. То, что не стоит фрагментировать данные на RAIDе вы показали очень убедительно: никак не ожидал, что стоимость при этом вырастет не на проценты, а в разы. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2008, 22:13 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
bk0010 Возможно если заставить грузиться куски индекса с разных дисков одновременно, то это позволит улучшить те удручающие результаты, которые вы привели выше. Хотя, скорее всего, скорость выполнения увеличится только если саму таблицу разнести по дискам, но стоимость запроса при этом уменьшится вряд ли. То, что не стоит фрагментировать данные на RAIDе вы показали очень убедительно: никак не ожидал, что стоимость при этом вырастет не на проценты, а в разы.бред какой-то, я показывал обратное, видимо никто не понимает что такое фрагментация и для чего ее применять. ртфм. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2008, 08:34 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
bk0010Журавлев Дениси зачем? Возможно если заставить грузиться куски индекса с разных дисков одновременно, то это позволит улучшить те удручающие результаты, которые вы привели выше. Хотя, скорее всего, скорость выполнения увеличится только если саму таблицу разнести по дискам, но стоимость запроса при этом уменьшится вряд ли. То, что не стоит фрагментировать данные на RAIDе вы показали очень убедительно: никак не ожидал, что стоимость при этом вырастет не на проценты, а в разы. Денис совсем о другом хотел сказать. Вопрос заключается в том, что если есть однозначное попадание ключа индекса в один фрагмент, значит должен читаться только один фрагмент, а не 4. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2008, 10:26 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Я хотел сказать что для таблицы с проводками, необходим индекс (счет,дата), но для квартальных отчетов при большом объеме таблицы (например от 500 млн записей), неплохо заиметь фрагментацию этого индекса (таблицу можно не фрагментировать, хотя при этом появляется опасность напороться на ограничения информикса). В 2008 году -- диски шпинделя раиды роли не играют. Еще можно заиметь таблицу счет, где балансовая группа -- отдельное индексированное поле тогда: select dmfo, dacc, cmfo, cacc, amountuak from vpayord, счет where счет.балансовая_группа in (6010,6011,6012,6013,6014,6015,6016,6017,6018) and счет.id = vpayord.счетid and cmfo=config_getkey('MFO','COMMON') and dtend between MDY(3,1,2008) and MDY(3,31,2008) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2008, 10:36 |
|
Проблема с substr?
|
|||
---|---|---|---|
#18+
Журавлев ДенисЯ хотел сказать что для таблицы с проводками, необходим индекс (счет,дата), но для квартальных отчетов при большом объеме таблицы (например от 500 млн записей), неплохо заиметь фрагментацию этого индекса (таблицу можно не фрагментировать, хотя при этом появляется опасность напороться на ограничения информикса). В 2008 году -- диски шпинделя раиды роли не играют. Если обслуждать кулинарию приготовления отчетов, то индексов на все отчеты ненапасешся, Я считаю что таблицу нужно фрагментировать, а отчеты можно и фулсканом прогнать, только следить за тем что бы база читала только один или нужный список фрагментов. p.s. По поводу раидов и шпинделей не согласен, но спорить не буду ибо оффтопик относительно substr. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2008, 10:59 |
|
|
start [/forum/topic.php?fid=44&msg=35594504&tid=1607978]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
113ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 332ms |
total: | 546ms |
0 / 0 |