Вопросы с тегом «pattern-matching»

8
Сопоставление с шаблоном LIKE, SIMILAR TO или регулярными выражениями в PostgreSQL
Мне пришлось написать простой запрос, где я иду искать имена людей, которые начинаются с B или D: SELECT s.name FROM spelers s WHERE s.name LIKE 'B%' OR s.name LIKE 'D%' ORDER BY 1 Мне было интересно, есть ли способ переписать это, чтобы стать более производительным. Так что я могу избежать …

3
Как реализуется LIKE?
Кто-нибудь может объяснить, как оператор LIKE реализован в современных системах баз данных (например, MySQL или Postgres)? или указать мне на некоторые ссылки, которые объясняют это? Наивным подходом было бы проверять каждую запись, выполняя регулярное выражение или частичное совпадение строк в интересующей области, но у меня есть чувство (надежда), что эти …

2
Как создать индекс, чтобы ускорить совокупный запрос LIKE по выражению?
Возможно, я задаю не тот вопрос в названии. Вот факты: Мои специалисты по обслуживанию клиентов жалуются на медленное время отклика при поиске клиентов в интерфейсе администрирования нашего сайта на Django. Мы используем Postgres 8.4.6. Я начал регистрировать медленные запросы и обнаружил этого преступника: SELECT COUNT(*) FROM "auth_user" WHERE UPPER("auth_user"."email"::text) LIKE …

1
Зачем вам индексировать text_pattern_ops для текстового столбца?
Сегодня « Семь баз данных за семь недель» познакомили меня с индексами для каждого оператора. Вы можете индексировать строки для шаблона, соответствующего предыдущим запросам, создав text_pattern_opsиндекс класса оператора, если значения индексируются в нижнем регистре. CREATE INDEX moves_title_pattern ON movies ( (lower(title) text_pattern_ops); Мы использовали, text_pattern_opsпотому что заголовок имеет тип текста. …

2
Поиск триграмм становится намного медленнее, так как строка поиска становится длиннее
В базе данных Postgres 9.1 у меня есть таблица table1с ~ 1,5M строк и столбцом label(упрощенные имена ради этого вопроса). Имеется функциональный индекс-триграмм lower(unaccent(label))( unaccent()сделан неизменным, чтобы его можно было использовать в индексе). Следующий запрос довольно быстрый: SELECT count(*) FROM table1 WHERE (lower(unaccent(label)) like lower(unaccent('%someword%'))); count ------- 1 (1 row) …

1
Получить частичное совпадение из индексированного в GIN столбца TSVECTOR
Я хотел бы получить результаты по запросу: SELECT * FROM ( SELECT id, subject FROM mailboxes WHERE tsv @@ plainto_tsquery('avail') ) AS t1 ORDER by id DESC; Это работает и возвращает строки с tsvсодержанием Available. Но если я использую avai(упал lable), он не может ничего найти. Все ли запросы должны …

2
Алгоритм нахождения самого длинного префикса
У меня есть две таблицы. Первый - это таблица с префиксами code name price 343 ek1 10 3435 nt 4 3432 ek2 2 Во-вторых, записи звонков с номерами телефонов number time 834353212 10 834321242 20 834312345 30 Мне нужно написать скрипт, который находит самый длинный префикс из префиксов для каждой …

5
Соответствие] (закрывающая квадратная скобка) с PATINDEX с использованием подстановочного знака «[]»
Я пишу пользовательский анализатор JSON в T-SQL † . Для моего парсера я использую PATINDEXфункцию, которая вычисляет позицию токена из списка токенов. В моем случае все токены состоят из отдельных символов и включают в себя: {} []:, Обычно, когда мне нужно найти (первую) позицию любого из нескольких заданных символов, я …

7
Как я могу сгенерировать все конечные подстроки после разделителя?
Учитывая строку, которая может содержать несколько экземпляров разделителя, я хочу сгенерировать все подстроки, начинающиеся после этого символа. Например, учитывая строку вроде 'a.b.c.d.e'(или массив {a,b,c,d,e}, я полагаю), я хочу создать массив вроде: {a.b.c.d.e, b.c.d.e, c.d.e, d.e, e} Предполагается использование в качестве триггера для заполнения столбца, чтобы упростить запрос частей имени домена …

1
Лучший индекс для функции подобия
Таким образом, у меня есть эта таблица с 6,2 миллионами записей, и я должен выполнить поисковые запросы с подобием для одного столбца. Запросы могут быть: SELECT "lca_test".* FROM "lca_test" WHERE (similarity(job_title, 'sales executive') > 0.6) AND worksite_city = 'los angeles' ORDER BY salary ASC LIMIT 50 OFFSET 0 Дополнительные условия …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.