<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - LIKE '%foo']]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=203</link>
		<description><![CDATA[Najświeższe odpowiedzi w LIKE '%foo'.]]></description>
		<lastBuildDate>Thu, 07 May 2009 13:55:14 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: LIKE '%foo']]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=823#p823</link>
			<description><![CDATA[Poka plan zapytania ;)

Fultext nie wiele ci da bo masz ciąg znaków bez białych znaków, więc będzie mu ciężko coś z tego wyliczyć.

1. Można by spróbować indexy funkcyjne ma przeszukiwania, ale to już ostateczność :)
2. Rozbić pole tak aby doprowadzić do domowości argumentów, ale pewnie nie ma takiej możliwości ;]]]></description>
			<author><![CDATA[dummy@example.com (psocha)]]></author>
			<pubDate>Thu, 07 May 2009 13:55:14 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=823#p823</guid>
		</item>
		<item>
			<title><![CDATA[Odp: LIKE '%foo']]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=815#p815</link>
			<description><![CDATA[Postgres do optymalizacji planu wykonania zapytań stosuje statystyki (coś a'la optymalizator kosztowy).  Statystyki przechowuje w tabelach. Statystyki odświeża się poleceniem analyze. Dobrze też robić coś jakiś czas odkurzanie (polecenie vacuum).]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Wed, 06 May 2009 21:25:03 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=815#p815</guid>
		</item>
		<item>
			<title><![CDATA[Odp: LIKE '%foo']]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=814#p814</link>
			<description><![CDATA[Tabela ok. 10 000 rek.

Co masz na myśli mówiąc statystyki?]]></description>
			<author><![CDATA[dummy@example.com (perbeatus)]]></author>
			<pubDate>Wed, 06 May 2009 20:16:36 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=814#p814</guid>
		</item>
		<item>
			<title><![CDATA[Odp: LIKE '%foo']]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=812#p812</link>
			<description><![CDATA[Duża ta tabela? Statystyki odświeżone?]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Wed, 06 May 2009 18:12:47 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=812#p812</guid>
		</item>
		<item>
			<title><![CDATA[LIKE '%foo']]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=811#p811</link>
			<description><![CDATA[Witam.

Przenoszenie bazy z MySQL na PgSQL i problem.

Mianowicie mam tabelę gdzie jedna z kolumn zawiera serial postaci A12345/A1234/1234.
Aplikacja często szuka po tej kolumnie i ma specyficzne wymagania co do wyników. Mianowicie fraza '123' ma zwrócić wszystkie rekordy w których ona występuje w dowolnym miejscu czyli np.

A1234/V1111/1434
C3333/D1231/1222
C3333/R3332/1123
itp.

Do tej pory działało to w sposób:

SELECT * FROM seriale WHERE serial LIKE '%123%';

i na MySQL działało szybko i sprawnie bez indeksowania (bo się nie da indeksować LIKE '%foo'). 

Natomiast na PgSQL działa to STRASZNIE wolno. Różnica jest kolosalna np. 5000 zapytań wykonanych jedno po drugim na MySQL trwało 0.5s a na PgSQL 45.0s! Jeśli natomiast chcę mieć możliwość szukania "case insensitive" jak domyślnie w MySQL to przy pomocy ILIKE w PgSQL trwa to UWAGA! 1.3 MINUTY!!

Podobno można zaindeksować takie wyszukiwanie przy pomocy Full Text Search, ale nie mam pojęcia jak skonfigurować to aby otrzymać takie wyniki jakie są mi potrzebne.
Próbowałem też użyć pg_trgm ale wyniki są dalekie od zadowalających.

Może ktoś pomoże?]]></description>
			<author><![CDATA[dummy@example.com (perbeatus)]]></author>
			<pubDate>Wed, 06 May 2009 17:56:14 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=811#p811</guid>
		</item>
	</channel>
</rss>
