Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Индекс для B в A LIKE B || '%'
|
|||
|---|---|---|---|
|
#18+
Люди, кто-нибудь знает, есть ли реализованные индексы для строк для оператора "начинается с" (обозначим @> ), такого, что A @> B эквивалентно A LIKE B||'%' или A ~ '^' || B. Смысл - проиндексировать B в таблице направлений в биллинге. Пока делаю индекс ( (B||chr(255)) , B) и проверяю A< B||chr(255) and A>= B. Реализовать можно,т.к. есть более сложный для ltree. Самому силенок не хватает пока понять работу GIST. Если есть учебник, что б более менне по полочкам, то сам сделаю и выложу. Кстати, а для отрезка времени (timestamp,timestamp) кто-нибудь rtree через gist сделал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2005, 15:47 |
|
||
|
Индекс для B в A LIKE B || '%'
|
|||
|---|---|---|---|
|
#18+
Написал. Вернее внес изменения в contrib btree_gist. Основные изменения в btree_text.c, btree_utils_var.c. btree_utils_var.h ввел две дополнительные ссылки и в остальных файлах на их место поставил NULL. в btree_gist.sql.in ввел определения функций, операторов и добавил в операторный класс пару строк. Поправлюсь: A LIKE B||'%' эквивалентно A <@ B, и A @> эквивалентно A=substr(B , 1 , length (A)), т.к. это соответствует семантике ltree. Испытания: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. В большинстве port - пустая строка. Есть несколько с phone - пустым, и port - нет. есть пару строк где оба не пусты. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. В Btree_gist не определен класс операторов для varchar, поэтому text. Используя BTree: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Используя Gist: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Реальное время (не Explain Analyze): ~13000 ms и ~7400 ms. Результаты запросов идентичны. Если убрать из подзапроса по voicetarh самый распространенный случай, где port <@ 'e0_' and phone<@'' (в результате) (и тогда лишь 19976 строк результата), то ~10100ms и ~4800ms. Платформа: Celeron 2,4Ghz, 512 RAM(dual), WD80JB. Под виндой - VmWare 4 Виртуальная машина:192Mb RAM, 2G HDD, Slackware 10, gcc 3.3.2, RaiserFS. Пожалуйста, пришлите замечания, исправления, предложения. Буду очень рад, ибо новичок :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 15:36 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=343&tid=2007307]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 339ms |

| 0 / 0 |
