SQL - rychlé předávání pole parametrů aneb geniálních triků není nikdy dost

Zveřejněno 30 srpna 04 10:15 odp. | michal 
Představte si situaci, výsledkem nějaké činnosti je seznam hodnot parametrů. A úkolem je najít záznamy v DB, které odpovídají těmto parametrům.
Zpracování pole parametrů v SQL je možné pojmou mnoha způsoby. Asi nejjednodušší je zformátovat parametry do stringu a vytvořit dotaz
Select * from table where ID in ( parametr1, parametr2, ...)

Bohužel nejjednodušší řěšení není v tomto případě nejrychlejší, ba naopak. S počtem parametrů se rychlost nalezení záznamů exponenciálně snižuje. V případě stovek či tisíců hodnot je rychlost zcela neúměrná

Tak jak jinak? Jako další se nabizí uložit hodnoty do nějake (temporary) tabulky a tuto poté zjoinovat se zdrojovou tabulkou. Myšlenka je to dobrá, INNER JOIN je rychlá operace. Slabinou je, jak rychle uložit tyto hodnoty do DB. Pomocí Insertů je to dosti pomalé. Jak jinak?
Pole hodnot můžeme předat jako string oddělený nějakým oddělovačem, tento string v cyklu proparsovat a hodnoty uložit do tmp.table.
Toto je poměrně rychlá varianta, obecně použitelná. Existuje však ješte rychlejší a musím říci se téměr geniálně elegantní varianta s třešničkou navíc.
Základem triku je tabulka hodnot obsahujicí seznam čísel od 1 do nějakého čísla. Třeba 5000. Vytvoříme ji snadno.
   SELECT TOP 5000 Number = IDENTITY(int, 1, 1)
   INTO   Numbers
   FROM   pubs..authors t1, pubs..authors t2, pubs..authors t3

Tabulky pubs..authors slouží čistě jako libovolný zdroj řádků pro dostatečné opakovaní. Nesmíme zapomenou na indexy
ALTER TABLE dbo.Numbers ADD CONSTRAINT
	PK_Numbers PRIMARY KEY CLUSTERED 
	(
	Number
	) ON [PRIMARY]

Připravíme seznam hodnot tak, aby jednotlivé hodnoty ve stringu zabírali vždy stejný počet znaků. Chybějící znaky doplníme mezerami. Tzn. hodnoty 1709945, 1656344, 496, 7 budou zformátované vypadat nějak takto:
1709945 1656344 ~~~~496 ~~~~~~~7  
(místo vlnovek ~ patri mezery)

Celý trik spočívá v tom, že se nemusí dohledávat jednotlivé oddělovače hodnot, ale skáče se po pevných blocích textu. Tabulka Number slouží jako rychlý zdroj "počítadla" a současně slouží jako činitel pro pohyb v textu. Další výhodou je, že délka řetězce hodnot není v podstatě omezena (typ text).

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

ALTER  FUNCTION ConvertString2RecordSet(@str text, @itemlen tinyint)
   RETURNS TABLE AS
   RETURN(SELECT listpos = n1.Number + m.maxnum * (n2.Number - 1),
              str = cast(
											substring(@str,
	                    @itemlen * (n1.Number + m.maxnum * (n2.Number - 1) - 1) + 1,
	                    @itemlen)
										as int)
	     FROM   Numbers n1
       CROSS JOIN (SELECT maxnum = MAX(Number) FROM Numbers) AS m
       JOIN   Numbers n2 ON
              @itemlen * (n1.Number + m.maxnum * (n2.Number - 1) - 1) + 1 <=
              datalength(@str)
       WHERE  n2.Number <= datalength(@str) / (m.maxnum * @itemlen) + 1
         AND  n1.Number <= CASE WHEN datalength(@str) / @itemlen <= m.maxnum
                                THEN datalength(@str) / @itemlen +
                                     CASE datalength(@str) % @itemlen
                                          WHEN 0 THEN 0
                                          ELSE 1
                                     END
                                ELSE m.maxnum
                           END)


GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO


Příklad volání:
select * from dbo.ConvertString2RecordSet(' 1709945 1656344 1100496',8)


Ve zdrojovém kódu doporučuji tyto části:
1) str = cast( .......... as int)
funkci cast odstraňte v případě, že hodnoty parametrů nejsou celá čísla.

2) veškerý kód za CROSS JOIN včetně. Toto je ona slibovaná třešnička na dortu !!
Funkce funguje velmi dobře i bez tohoto kódu, ovšem pouze do počtu parametrů, kolik záznamů je v tabulce Numbers. (V našem případě 5000). Pokud plánujete více parametrů, pak jsou 2 cesty - buď doplnit tabulku Numbers, anebo pomocí Self joinu pracovat až s 5000 x 5000 záznamy. A to už asi stačit bude, ne?


Za tento úžasný trik musím poděkovat Erlandu Sommarskogovi, na jehož stránce Arrays and Lists in SQL Server je velmi dobré srovnání způsobů zpracování parametrů. Moji vlastní rutinu (2x pomalejší) jsem tak mohl s radostí zahodit. Druhý dík patří Michalovi Levému, který na tuto stránku upozornil v VSNET-L listu.
Vedeno pod:

Upozornění na nové komentáře

Pokud chčeš dostávat upozornění emailem na změny u toho příspěvku,tak se zaregistruj zde.zde

Odebírat komentáře k tomuto příspěvku pomocí RSS

Komentář

# Radim Hampel said on srpna 31, 2004 8:14:
Ahoj Michale,
opravdu to bylo u tebe 2x rychlejsi? Prijde mi to zvlastni, ja vetsinou(kdyz uz) predavam nekolik int cisel oddelenych carkou a nechce se mi verit, je klasicka split fce bude pomalejsi nez nejake prochazeni tabulky s 5000 zaznamy. Na cem jste to zkouseli?

A rypnuti na zaver, kdyz se budou pridavat parametry do in (..,..,) dotazu, vykonnost se rozhodne nebude snizovat exponencialne, maximalne linearne... :)
# PK said on srpna 31, 2004 8:34:
No a ja bych doplnil nejaka errata:

1. (vrchni cast clanku) hodnoty ulozit do tmp.table. Treba takto:
(no a tam nic neni ;-) )

2. Misto tecek jsou vlnovky (nema byti misto mezer?)

Vubec mi to prijde nejaky zmateny... Zkusim si precist original :-)
# Michael Jurek said on srpna 31, 2004 8:53:
Dle meho nazoru je to nechtene, ale uplne idealni demo na smysl integrace CLR do enginu SQLu.
Napsat funkci ConvertString2DataSet v C# a pouzit string.Split() nebo neco podobneho, tak to bude dle meho nazoru 10x kratsi a 1-1000x rychlejsi (v zavislosti na poctu fragmentu, cim vice, tim lepsi vykon C#).

A rypnuti do Radima: vykonnost se nebude snizovat linearne s poctem parametru (to by se pak mohla dostat do zapornych hodnot), ale bude tomu poctu zhruba neprimo umerna.
# Michal said on srpna 31, 2004 9:23:
ad radim: zkus si pridat do IN () 10, 100, 1000, 10000 a 100000 polozek a zmer si cas. Doba behu skriptu se nebude prodluzovat ani omylem linearne :-(

ad PK: mas pravdu, opravim. Original urcite stoji za precteni, je tam toho vice

ad Michael: vyzkousim, ale nemyslim si, ze by v CLR bylo totez rychlejsi. Nejlepsi efekt tohoto je, jak rychle prevest radu parametru na recordset, a k tomu SPLIT moc nepomuze...
# Michael Jurek said on srpna 31, 2004 9:39:
Myslim, ze je v te funkci prilis mnoho string/int aritmetiky a to je prave oblast, kde je T-SQL desive pomale.
Pokud udelas TVF pomoci .NETu, muzes vyuzit rychle operace s retezci/cisly a ani nebudes potrebovat tabulku Numbers (nebo se mylim).
Viz napr. Scenario #5 v http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/sql_ovyukonnetprogfeatures.asp

Ale odvolavam to s kratkosti kodu - je potreba alespon formalne implementovat velke mnozstvi metod, to jsem trochu prestrelil.
# Michal said on srpna 31, 2004 9:45:
no, tohle je akademicka diskuze, kterou vyresi prakticky pokus. Az vyjde trocha casu, moc rad si to odzkousim. Ale pokud budes rychlejsi, budou asi radi ostatni :-)
# Radim Hampel said on srpna 31, 2004 10:06:
to Michael: Ano, ano, mam ve vete zasadni chybu. Cas poroste linearne.

to Michal: Proc by cas nerostl linearne? Kdyz vezmeme nejhorsi pripad, ze projdu celou tabulku a kazdy radek porovnam postupne s parametry, tak pridanim n parametru mi pribyde pocet radku * n porovnani = linearni zavislost.

Kazdopadne by mne zajimala ta casova zavislost, porad si nemyslim, ze to bude rychlejsi. A mimochodem, priklad jak napsat tvf je tady, staci jenom vrazit misto nacitani souboru split a prochazeni pole:
http://blog.vyvojar.cz/radim/archive/2004/08/13/1493.aspx
# Michal said on srpna 31, 2004 10:17:
to radim: proc neroste linearne nevim, to by mohlo vysvetlil MS, ale je to tak.

co se casu tyka, koukni na ten dokument, co odkazuju z blogu. Je to velmi zajimave cteni a je tam dost testu s casy.
# Petr Lazecky said on srpna 31, 2004 10:28:
Me osobne se tento clanek libi. Urcite je to netradicni technika jak resit problem a at uz je to vykonnejsi pro vetsi mnozstvi hodnot nebo pro mensi mnozstvi hodnot (kazde reseni ma sve "corner cases") tak je tento clanek urcite kreativni prispevek jak resit problem. A to vzdy obohati. Dik Michale.
# benidorm by coach said on října 24, 2006 18:08:

Thank you so much for this great post  about <a href="http://cherylquant.bravehost.com/benidorm-by-coach.html"">http://cherylquant.bravehost.com/benidorm-by-coach.html" title="benidorm by coach">benidorm by coach</a> and [URL=http://cherylquant.bravehost.com/benidorm-by-coach.html]benidorm by coach[/URL]

# Gogi said on října 25, 2006 23:39:

Emphysema is a chronic respiratory disease where there is over-inflation

# Pol Pit said on října 26, 2006 2:06:

I 'm so [url=http://access.122mb.com]lucky[/url] on having what I have!

Just visit [url=http://access.serverheaven.net]my site[/url]. Just see it! And good luck in yours [url=http://access.122mb.com]search[/url].

# Pol Pit said on října 26, 2006 2:17:

I 'm so [url=http://access.122mb.com]lucky[/url] on having what I have!

Just visit [url=http://access.serverheaven.net]my site[/url]. Just see it! And good luck in yours [url=http://access.122mb.com]search[/url].

# polony said on října 26, 2006 19:51:

[URL=http://h.1asphost.com/mybonuspage/commercial-van-insurance-uk/commercial-insurance-quote-uk-van.html]commercial insurance quote uk van[/URL]

<a href=http://h.1asphost.com/mybonuspage/commercial-van-insurance-uk/commercial-insurance-quote-uk-van.html>commercial insurance quote uk van</a>

http://h.1asphost.com/mybonuspage/commercial-van-insurance-uk/commercial-insurance-quote-uk-van.html

# Gogi said on října 27, 2006 21:39:

pulmicort. All about of pulmicort.

# tourism victoria said on října 30, 2006 13:43:

Thank you so much for this great post  about <a href="http://newbusinessloan.bravehost.com/tourism-victoria.html"">http://newbusinessloan.bravehost.com/tourism-victoria.html" title="tourism victoria">tourism victoria</a> and [URL=http://newbusinessloan.bravehost.com/tourism-victoria.html]tourism victoria[/URL]

# caribbean villas said on října 31, 2006 6:03:

Very interesting and good point about <a href="http://cheapmedical.50megs.com/caribbean-villas.html"">http://cheapmedical.50megs.com/caribbean-villas.html" title="caribbean villas">caribbean villas</a> and [URL=http://cheapmedical.50megs.com/caribbean-villas.html]caribbean villas[/URL]

# esaesa said on listopadu 13, 2006 8:34:

Excellent browsing have the to

# usbusb said on listopadu 13, 2006 18:34:

Good Site .Nice work.

# isdisd said on listopadu 14, 2006 1:03:

good site

# Jonn said on listopadu 16, 2006 3:05:

Good site! Great design... and respect webmaster!

visit my blog about my car http://myblog.es/cadillacsuv I like Cadillak!

[URL=http://myblog.es/cadillacsuv]cadillacsuv[/URL]

# hothot said on listopadu 16, 2006 10:56:

Very interesting.

# lcdlcd said on listopadu 17, 2006 13:04:

good site

# Difo said on listopadu 18, 2006 0:08:

Good site, very nice design!

http://www.onlinewebservice6.de/gastbuch.php?id=124598

# colcol said on listopadu 18, 2006 10:38:

While site keep Good work

# colcol said on listopadu 18, 2006 19:22:

Very interesting.

# Lisa said on listopadu 18, 2006 20:53:

...))) well..very nice design!

[URL=http://www.onlinewebservice6.de/gastbuch.php?id=124598]free ringtones[/URL]

http://www.onlinewebservice6.de/gastbuch.php?id=124598

# colcol said on listopadu 19, 2006 11:03:

While site keep Good work

# solsol said on listopadu 19, 2006 21:11:

good site

# weightlosssurgery said on listopadu 19, 2006 22:20:

PLASTIC SURGERY WEIGHT. CLICK HERE! ALL ABOUT PLASTIC SURGERY WEIGHT!

<a href="http://www.onlinewebservice6.de/gastbuch.php?id=124796">plastic">http://www.onlinewebservice6.de/gastbuch.php?id=124796">plastic surgery weight</a>

http://www.onlinewebservice6.de/gastbuch.php?id=124796

# fegfeg said on listopadu 20, 2006 7:50:

Very interesting.

# Doktor said on listopadu 20, 2006 10:20:

Good site! well...)) good design..!

[URL=http://www.onlinewebservice6.de/gastbuch.php?id=124796 ]plastic surgery weight[/URL]

http://www.onlinewebservice6.de/gastbuch.php?id=124796

# pospos said on listopadu 20, 2006 16:37:

good site

# pospos said on listopadu 20, 2006 16:37:

good site

# eureur said on listopadu 21, 2006 18:07:

Very interesting.

# disdis said on listopadu 22, 2006 7:13:

While site keep Good work

# tony said on listopadu 23, 2006 16:30:

Cool site! <a href=http://akoc-icco.ru/bj-39-s-wholesale-club>bj 39-s wholesale club</a>

# jambo said on listopadu 23, 2006 21:56:

Hi! check this <a href=http://akoc-icco.ru/wonder-woman-costume>wonder woman costume</a>

# gimi said on listopadu 24, 2006 10:48:

Good Site .Nice work.

# tony said on listopadu 24, 2006 15:09:

Cool site! <a href=http://akoc-icco.ru/bj-39-s-wholesale-club>bj 39-s wholesale club</a>

# jambo said on listopadu 24, 2006 22:43:

Hi! check this <a href=http://akoc-icco.ru/wonder-woman-costume>wonder woman costume</a>

# ddppqq said on listopadu 25, 2006 3:31:

peace! <a href=http://akoc-icco.ru/wholesale-watch>wholesale watch</a>

# rembo said on listopadu 25, 2006 10:01:

I love you! <a href=http://akoc-icco.ru/wholesale-toy>wholesale toy</a>

# Mikki said on listopadu 25, 2006 11:49:

...ok! I like your site! ))) but..mmm) you must visit my site! )) About free NOKIA ringtones!

http://www.onlinewebservice6.de/gastbuch.php?id=125298

[URL=http://www.onlinewebservice6.de/gastbuch.php?id=125298]free nokia ringtones[/URL]

# Donna said on listopadu 29, 2006 16:50:

Today was a complete loss. I feel like a fog. I've just been hanging out doing nothing, but eh...

# Linda said on listopadu 30, 2006 19:36:

I've just been letting everything pass me by lately. I've more or less been doing nothing. Not much going on lately. I can't be bothered with anything recently.

# Alise said on prosince 1, 2006 7:25:

Not much on my mind recently. I haven't gotten much done. What can I say? I haven't been up to much these days, but such is life. I feel like a complete blank, but so it goes...)))

# aste said on prosince 1, 2006 14:35:

good site

# info said on prosince 1, 2006 22:07:

Good Site .Nice work.

# traduz said on prosince 2, 2006 8:29:

good site

# Kich said on prosince 2, 2006 18:12:

Good site!

# bynet said on prosince 3, 2006 9:51:

While site keep Good work

# Mikle said on prosince 4, 2006 15:00:

Good site! Well.. i like design!

# theital said on prosince 6, 2006 21:56:

Good Site .Nice work.

# gratis said on prosince 8, 2006 9:54:

Very interesting.

# Milas said on prosince 10, 2006 14:16:

Well...good news, i like your site, Happy new year! )))

# Tonik said on prosince 12, 2006 3:26:

Well, your site is very good, good news and design...! ))) Happy Christmas! SmilerMan.

# incid said on prosince 12, 2006 3:39:

Excellent browsing have the to

# Lorazepam said on prosince 16, 2006 5:06:

A very interesting site, thank you very much ! My Homepage :

<a href="http://buylorazepam.blogspot.com">buy">http://buylorazepam.blogspot.com">buy lorazepam</a>

[url=http://buylorazepam.blogspot.com]buy lorazepam[/url]

<a href="http://buylevaquin.blogspot.com">buylevaquin</a>">http://buylevaquin.blogspot.com">buylevaquin</a>

[url=http://buylevaquin.blogspot.com]buylevaquin[/url]

<a href="http://buypremarin.blogspot.com">buy">http://buypremarin.blogspot.com">buy premarin</a>

[url=http://buypremarin.blogspot.com]buy premarin[/url]

# gffg said on prosince 17, 2006 4:47:

A very interesting site, thank you very much ! My Homepage :

<a href="http://buylorazepam.blogspot.com">buy">http://buylorazepam.blogspot.com">buy lorazepam</a>

[url=http://buylorazepam.blogspot.com]buy lorazepam[/url]

<a href="http://buylevaquin.blogspot.com">buylevaquin</a>">http://buylevaquin.blogspot.com">buylevaquin</a>

[url=http://buylevaquin.blogspot.com]buylevaquin[/url]

<a href="http://buypremarin.blogspot.com">buy">http://buypremarin.blogspot.com">buy premarin</a>

[url=http://buypremarin.blogspot.com]buy premarin[/url]

# Jonn said on prosince 18, 2006 7:46:

Happy New Year! real good site!

# Dingo said on prosince 18, 2006 15:16:

real good news! good site, respect webmaster!

# art said on prosince 19, 2006 2:14:

While site keep Good work

# besti,besti said on prosince 22, 2006 9:06:

While site keep Good work,While site keep Good work

# sarde,sarde said on prosince 23, 2006 22:30:

Excellent browsing have the to,Excellent browsing have the to

# Mestinon said on prosince 25, 2006 3:42:

Very Good Site!

<a href="http://buymestinon.blogspot.com/">buy">http://buymestinon.blogspot.com/">buy mestinon</a>

[url=http://buymestinon.blogspot.com/]buy mestinon[/url]

<a href="http://buyaccupril.blogspot.com/">buy">http://buyaccupril.blogspot.com/">buy accupril</a>

[url=http://buyaccupril.blogspot.com/]buy accupril[/url]

# cantant,cantant said on prosince 25, 2006 7:35:

Excellent browsing have the to,Excellent browsing have the to

# lianet said on prosince 28, 2006 12:40:

Very interesting.

# Vanessa,Vanessa said on ledna 18, 2007 23:02:

Hi, good morning to all of you... Nice Guestbook ;-) !! <a href= http://docs.google.com/View?docid=df2wwh2p_7c7mc89 >Debt Consolidation</a> [url=http://docs.google.com/View?docid=df2wwh2p_7c7mc89]Debt Consolidation[/url]  goodbye

# bank card credit merrick said on ledna 29, 2008 18:58:

Geradewie klingelt�ne kostenlos gratis klingelt�ne

# WongMarsha35 said on listopadu 24, 2010 19:55:

Do you acknowledge that it's correct time to receive the <a href="http://bestfinance-blog.com/topics/credit-loans">credit loans</a>, which would make your dreams come true.

# thesis said on prosince 11, 2010 16:53:

People have got at present time great web sources to buy the the dissertation or cool article about this post at the professional thesis service.

# essay papers said on prosince 25, 2010 16:07:

Fantabulous topic! Genuinely superb to be honest! I received my  research papers was very impressed with essays online! I read it and could not have done a finer custom research paper. I have got my grade on it, and of course it was genuinely  well organized.

# Buy custom essay papers said on prosince 30, 2010 2:53:

Some men find some facts just about this post  from the different places. Thus, I would like advice to buy an essay using the term paper writing services. So, men from time to time order custom papers.

# essay writing said on ledna 1, 2011 6:16:

You don't have to get all the tension of essays finishing simply because professional papers writing corporations can rid of your stress proposing you to buy paper writing and that's very good, I guess!

# resume services said on ledna 3, 2011 22:50:

Some students give the duty to qualified resume writers because they miss the skill to write a respectable resume so that the argument why you need  to resume, but such people like creator don't do that. Thanks a lot for the topic. Really important facts about this post.

# buy essays said on ledna 5, 2011 7:27:

Frequently, you can't return your missed minutes. Furthermore, you cannot do a thing with that! Hence, when you're proposed to order custom essays, you should not have to refuse. All in our life depends on our options! We ought not to miss!

# GeorgeBax said on června 10, 2017 4:46:

Фармакодинамика Катеджель с лидокаином стерильный антисептический гель, обладающий местным анестезирующим действием Путем местной, поверхностной анестезии Катеджель с лидокаином обеспечивает анестезию слизистой оболочки, что приводит к быстрому симптоматическому уменьшению болевых ощущений Анестезия наступает уже через 5 10 мин после нанесения препарата и длится 20 30 мин Кроме обезболивающего действия, Катеджель с лидокаином в значительной степени предотвращает инфекции мочевыводящих путей после катетеризации Лидокаин клинически испытанный анестетик группы амидов для местного применения Лидокаин обратимо и местно тормозит проводимость чувствительных нервных волокон Чувствительность последовательно снижается холод тепло, прикосновение и давление При местной анестезии действие препарата наступает через 3 5 мин В воспалительных тканях его эффект уменьшается в связи с кислотной величиной рН, которая доминирует Кроме анестезирующего действия, лидокаин обладает также антиаритмическим эффектом В отличие от большинства других местных анестетиков, лидокаин не оказывает сосудорасширяющего действия Хлоргексидин противомикробный препарат, активен против большинства грамположительных и грамотрицательных бактерий, а также против ряда грибов и вирусов В составе препарата хлоргексидин действует в качестве профилактического средства с целью предотвращения ятрогенных инфекций при местном применении.

Максим Генадьевич, врач дерматолог высшей категории.

стоят достаточно дорого.

Мазь не вызывает аллергических реакций, все компоненты её состава гипоаллергенны.

Проявление симптоматики после контакта с инфекцией не заставит себя ждать человек не находит себе места из-за нестерпимого зуда и жжения кожи пальцев ног, ступни становится стыдно показывать Тинедол в этом случае рекомендуют многие опытные дерматологи Мазь последнего поколения работает сразу в нескольких направлениях, устраняя неприятные признаки микоза и действуя напрямую на причину недуга.

Мятное эфирное масло Данный продукт, входящий в состав крема способствует улучшению состояния кожных покровов, а также отменно противостоит различным инфекционным развитиям и работает на стимулирование межклеточного обмена.

Купить Tinedol Тинедол в Москве со скидкой 50.

Если же Вы будете бездействовать, то Вас ждут такие неприятности.

Прекрасное средство Одни травы да сборы, но такой эффект спустя 4 дня пользования, что я просто диву даюсь Спасибо большое Елене Малышевой.

Воздержаться от использования чужих предметов одежды, обуви.

Официальный сайт: http://tinedol.1stbest.info/

# JasonLew said on června 13, 2017 12:27:

Вкуснейший экзотический плод - мангустин, стал настоящим открытием в диетологии!

Он содержит РЕКОРДНОЕ количество полезных веществ, стимулирующих активное жиросжигание и снижающих вес!

Сироп мангустина растопит до 10 кг жира за 2 недели!

Спаситесь от ожирения и сократите риск инфаркта, диабета и гипертонии на 89%.

Перейти на сайт: http://mangjoo77.mangoosteen.com/

# KelTeerly said on června 17, 2017 15:20:

Tamsulosin 0.4mg  [url=http://doxycycline.ccrpdc.com/purchase-vibramycin-usa.php]Purchase Vibramycin Usa[/url] Comprar Cialis Sin Receta Levitra And Poppers  [url=http://priligy-30mg-tablets.priliorder.com]Priligy 30mg Tablets[/url] Keflex Ng Tube Compatability Drug Route

# Groversok said on června 20, 2017 19:59:

Tinedol – эффективное средство от грибка стопы, неприятного запаха и зуда.

Перейти на сайт: http://tinedol.1stbest.info/

# ChasRegmep said on července 8, 2017 4:44:

Order Prednisone Online  [url=http://pricescial.com]cialis[/url] Bentyl Cod Only Low Price

# ChasRegmep said on července 8, 2017 4:44:

Order Prednisone Online  [url=http://pricescial.com]cialis[/url] Bentyl Cod Only Low Price

# ChasRegmep said on července 13, 2017 19:31:

Propecia Disconts Online  [url=http://pricescial.com]viagra cialis[/url] Comprar Cialis En La Farmacia Sin Receta

# Kennglalcops said on července 13, 2017 23:29:

Whisky Amoxicillin  [url=http://buytadalaf.com]cialis[/url] Buy Prevacid 24hr

# Kennglalcops said on července 13, 2017 23:29:

Whisky Amoxicillin  [url=http://buytadalaf.com]cialis[/url] Buy Prevacid 24hr

# ChasRegmep said on července 18, 2017 18:05:

Propecia Weekly Dosage  [url=http://onlinecial.com]online pharmacy[/url] Buy Cheap Tegretol Uk

# ChasRegmep said on července 18, 2017 18:05:

Propecia Weekly Dosage  [url=http://onlinecial.com]online pharmacy[/url] Buy Cheap Tegretol Uk

# KelTeerly said on července 19, 2017 11:12:

Pay For Cialis With Paypal  [url=http://buytadalaf.com]cialis[/url] Farmacia Cialis Sin Receta

# KelTeerly said on srpna 1, 2017 9:11:

Buy Letrozole Gynecomastia  [url=http://cialvia.com]cialis[/url] Cephalexin Allegeric Resction

# KelTeerly said on srpna 1, 2017 9:11:

Buy Letrozole Gynecomastia  [url=http://cialvia.com]cialis[/url] Cephalexin Allegeric Resction

# RonbuIt said on září 28, 2017 1:15:

Vt Logistics Propecia To Grow Hair Levitra Efectos  [url=http://cialgeneri.com ]cheap cialis[/url] Priligy Kaufen Forum Rualis 20

# RonbuIt said on října 1, 2017 22:06:

Vent Kamagra  [url=http://buyvarden.com]levitra 60 mg[/url] Viagra Ohne Rezept Holland Cialis Stripes Erfahrungen  

# RonbuIt said on října 10, 2017 20:45:

Proventil Inhaler For Sale Efecto De Kamagra Viagra Vrai Acheter  [url=http://sildenaf100mg.com]viagra[/url] Furosemida Tabletas Enlina  

# RonbuIt said on října 10, 2017 23:04:

Blood Pressure Medications For Sale Gonorrhea Treatment Zithromax  [url=http://orderviapills.com]viagra[/url] Want To Buy Real Finasteride  

# RonbuIt said on října 20, 2017 20:40:

Propecia Online Rx  [url=http://orderlevi.com]reputable online levitra[/url] What Does Amoxicillin Treat In Dogs Finasteride Cod Accepted Website  

# RonbuIt said on října 20, 2017 20:40:

Propecia Online Rx  [url=http://orderlevi.com]reputable online levitra[/url] What Does Amoxicillin Treat In Dogs Finasteride Cod Accepted Website  

# RonbuIt said on listopadu 12, 2017 17:22:

Precio Cialis Con Receta Medica Cheap Kamagra From India Amoxicillin Adult Dose For Cat Nite  [url=http://buycialonline.com]cialis online[/url] Pak Online Overnight Viagra Para Hombres Venta  

# RonbuIt said on listopadu 16, 2017 18:38:

Amoxicillin With Tasan  [url=http://buyvarden.com]why is levitra so expensive[/url] Ordering Doxycycline Cialis Il Costo Buy Doxycycline In The Us  

# Emma said on ledna 27, 2018 3:23:

kamagra 100mg sildenafil citrate sildenafil 100mg http://sildenafilcitrate.today

# Jennifer said on ledna 27, 2018 9:27:

how does viagra work viagra alternative viagra side effects http://buyv1agra.com

# Eveliny said on února 20, 2018 23:43:

Prix Du Lioresal  [url=http://cial10mg.com]cialis price[/url] Essais Cliniques Priligy  

# Edwardkix said on června 17, 2018 3:15:

http://maps.google.com.fj/url?q=http://doktorkling.ml

http://maps.google.pl/url?q=http://kamagra-legal.tk

http://maps.google.com.sb/url?q=http://kamagra-nl.tk

http://images.google.ro/url?q=http://kamagra-preis.tk

http://maps.google.gr/url?q=http://kamagra-super.tk

http://images.google.co.il/url?q=http://kamagra-1st.tk

# Michaelvasia said on června 17, 2018 4:55:

http://maps.google.pl/url?q=http://kamagra-erektion.tk

http://maps.google.com.sv/url?q=http://kamagra-fast.tk

https://maps.google.com.br/url?q=http://kamagra-gold.tk

http://images.google.ae/url?q=http://sildenafil-hinta.tk

http://maps.google.com.eg/url?q=http://diclofenac-50-mg.tk

http://maps.google.mu/url?q=http://voltaren-t.ml

# Edwardkix said on června 17, 2018 4:55:

http://www.google.si/url?sa=i&source=images&cd=&docid=tvesbldjjphkym&tbnid=isrjl50bi1j8bm:&ved=0cagqjrwwaa&url=http://doktorkeil.ml

http://maps.google.gr/url?q=http://doktormaisinger.ml

http://images.google.pl/url?q=http://kamagra-now.tk

http://images.google.com.vn/url?q=http://kamagra-paypal.tk

http://maps.google.com.kw/url?q=http://kamagra-test.tk

http://www.google.com.sg/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0cdaqfjaa&url=http://free-kamagra.tk

# Michaelvasia said on června 17, 2018 6:30:

http://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0ceaqfjae&url=http://kamagra-de.tk

http://www.google.cz/url?q=http://kamagra-frauen.tk

http://images.google.com.ua/url?q=http://kamagra-gold.tk

http://images.google.com.sg/url?source=imgres&ct=img&q=http://sildenafil-toimiiko.tk

https://www.google.bg/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&sqi=2&ved=0cdkqfjab&url=http://diclofenac-50-mg.tk

http://www.google.com.tr/url?sa=t&rct=j&q=inurl:index.php?option=com_da&source=web&cd=6&ved=0ce8qfjaf&url=http://diclofenac-tablett.tk

# Edwardkix said on června 17, 2018 6:35:

http://maps.google.mu/url?q=http://doktorkeil.ml

http://maps.google.cl/url?q=http://kamagra-kaufen.tk

http://www.google.lt/url?sa=t&source=web&cd=1&ved=0cbyqfjaa&url=http://kamagra-now.tk

http://maps.google.com.ec/url?q=http://kamagra-polo.tk

https://maps.google.com.br/url?q=http://kamagra-super.tk

http://maps.google.dk/url?q=http://super-kamagra.tk

# Edwardkix said on června 17, 2018 8:16:

http://www.google.rs/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=14&ved=0chmqfjanahukewirlfvnx9jhahwfxcwkhvwtcdu&url=http://doktorkeil.ml

http://www.google.lv/url?sa=f&rct=j&url=http://kamagra-legal.tk

https://maps.google.co.kr/url?q=http://kamagra-nachnahme.tk

https://ogs.ny.gov/disclaim/default.asp?url=http://kamagra-polo.tk

http://maps.google.com.sl/url?q=http://kamagra-super.tk

https://www.nycgovparks.org/exit?url=http://kamagra-wirkung.tk

# Edwardkix said on června 17, 2018 11:36:

http://maps.google.ie/url?q=http://doktorlefler.ml

http://www.google.com.ua/url?sa=t&rct=j&q=&esrc=s&source=web&cd=15&ved=0CEsQFjAEOAo&url=http://doktorlentz.ml

http://images.google.com.pe/url?q=http://kamagra-nl.tk

http://www.google.com.tr/url?sa=t&rct=j&q=inurl:index.php?option=com_da&source=web&cd=6&ved=0ce8qfjaf&url=http://kamagra-polo.tk

http://maps.google.com.na/url?q=http://kamagra-wiki.tk

https://maps.google.ch/url?q=http://kamagra-1st.tk

# Michaelvasia said on června 17, 2018 12:46:

http://www.google.lv/url?sa=f&rct=j&url=http://kamagra-erektion.tk

http://maps.google.com.pe/url?q=http://kamagra-forum.tk

http://maps.google.com.et/url?q=http://sildenafil-100mg.tk

http://maps.google.com.om/url?q=http://sildenafil-kesto.tk

https://www.ogs.ny.gov/disclaim/default.asp?url=http://diclofenac-50-mg.tk

http://maps.google.com.bh/url?q=http://diclofenac-salva.tk

# Edwardkix said on června 17, 2018 13:15:

https://maps.google.com.cu/url?q=http://doktorkunz.ml

http://maps.google.com.co/url?q=http://kamagra-kaufen.tk

http://maps.google.com.gi/url?q=http://kamagra-oral.tk

http://maps.google.ie/url?q=http://kamagra-pharma.tk

https://ogs.ny.gov/disclaim/default.asp?url=http://kamagra-store.tk

http://images.google.co.kr/url?q=http://jelly-kamagra.tk

# Michaelvasia said on června 17, 2018 14:20:

http://maps.google.com.bn/url?q=http://kamagra-einnahme.tk

http://images.google.si/url?q=http://kamagra-fast.tk

http://images.google.ee/url?q=http://kamagra-jel.tk

http://images.google.lv/url?q=http://sildenafil-orion.tk

http://search.wi.gov/cpp/help/urlstatusgo.html?url=http://voltaren-tablett.ml

http://images.google.ae/url?q=http://diclofenac-pris.tk

# Michaelvasia said on června 17, 2018 15:54:

http://www.google.com.sg/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0cdaqfjaa&url=http://kamagra-einnahme.tk

http://maps.google.com.hk/url?q=http://kamagra-frauen.tk

http://images.google.fi/url?q=http://kamagra-gold.tk

http://maps.google.sk/url?q=http://sildenafil-actavis.tk

http://images.google.com.sg/url?source=imgres&ct=img&q=http://diclofenac-25-mg.tk

http://maps.google.com.sv/url?q=http://diclofenac-pris.tk

# Edwardkix said on června 17, 2018 16:36:

http://search.wi.gov/cpp/help/urlstatusgo.html?url=http://doktorkling.ml

http://www.lib.nus.edu.sg/digital/go.asp?url=http://doktormaisinger.ml

http://maps.google.com.my/url?q=http://kamagra-nachnahme.tk

https://www.ogs.ny.gov/disclaim/default.asp?url=http://kamagra-preis.tk

https://www.google.com.ar/search?hl=ar&q=http://kamagra-viagra.tk

http://images.google.bg/url?q=http://kamagra-wirkung.tk

# Michaelvasia said on června 17, 2018 17:27:

http://maps.google.com.bh/url?q=http://kamagra-dosierung.tk

http://maps.google.pl/url?q=http://kamagra-erfahrung.tk

http://maps.google.com.fj/url?q=http://sildenafil-accord.tk

http://images.google.com.ph/url?q=http://sildenafil-actavis.tk

http://lib.nus.edu.sg/digital/go.asp?url=http://diclofenac-25-mg.tk

http://maps.google.com.ly/url?q=http://diclofenac-tablett.tk

# Michaelvasia said on června 17, 2018 19:01:

http://images.google.ro/url?q=http://kamagra-de.tk

http://maps.google.cl/url?q=http://kamagra-eu.tk

http://maps.google.com.ly/url?q=http://kamagra-jel.tk

http://images.google.lt/url?q=http://sildenafil-toimiiko.tk

http://maps.google.com.mt/url?q=http://diclofenac-25-mg.tk

http://maps.google.sk/url?q=http://voltaren-50-mg.ml

# Edwardkix said on června 17, 2018 19:54:

http://maps.google.com.qa/url?q=http://doktoreisemann.ml

http://maps.google.si/url?q=http://kamagra-kaufen.tk

http://www.google.com.my/url?q=http://kamagra-now.tk

https://maps.google.ch/url?q=http://kamagra-pharma.tk

http://images.google.com.mx/url?q=http://kamagra-store.tk

http://maps.google.com.et/url?q=http://kamagra-1st.tk

# Michaelvasia said on června 17, 2018 21:00:

https://www.google.mu/url?q=http://kamagra-erektion.tk

https://maps.google.ch/url?q=http://kamagra-fast.tk

http://maps.google.co.nz/url?q=http://sildenafil-25-mg.tk

http://maps.google.si/url?q=http://sildenafil-orion.tk

http://images.google.com.eg/url?q=http://voltaren-tablett.ml

http://maps.google.com.ng/url?q=http://diclofenac-tablett.tk

# Edwardkix said on června 17, 2018 21:32:

http://maps.google.co.za/url?q=http://doktoreisemann.ml

http://maps.google.com.ph/url?q=http://kamagra-kaufen.tk

http://maps.google.com.eg/url?q=http://kamagra-online.tk

http://maps.google.com.sl/url?q=http://kamagra-original.tk

http://rensselaerny.gov/departments/policedepartment/events/eventslist/15-02-13/rensselaer_knights_of_columbus_lenten_dinners.aspx?returnurl=http://kamagra-super.tk

http://maps.google.com.ai/url?q=http://super-kamagra.tk

# Edwardkix said on června 17, 2018 23:10:

http://maps.google.com.kw/url?q=http://doktoreisemann.ml

http://maps.google.com.om/url?q=http://kamagra-legal.tk

http://maps.google.com.sb/url?q=http://kamagra-oral.tk

https://maps.google.com.cu/url?q=http://kamagra-shop.tk

http://maps.google.com.ph/url?q=http://kamagra-sildenafil.tk

http://images.google.ee/url?q=http://jelly-kamagra.tk

# Edwardkix said on června 18, 2018 0:50:

http://maps.google.ie/url?q=http://doktorlefler.ml

http://images.google.com.mx/url?q=http://doktorwacker.ml

http://images.google.pt/url?q=http://kamagra-opinie.tk

http://maps.google.com.bo/url?q=http://kamagra-polo.tk

http://maps.google.co.nz/url?q=http://kamagra-wiki.tk

http://apps.sos.ky.gov/land/cities/linkto.asp?link=http://kamagra-1st.tk

# Michaelvasia said on června 18, 2018 1:14:

http://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0ceaqfjae&url=http://kamagra-de.tk

http://maps.google.com.lb/url?q=http://kamagra-fast.tk

http://maps.google.com.na/url?q=http://sildenafil-accord.tk

http://maps.google.cz/url?q=http://sildenafil-sandoz.tk

http://maps.google.com.ua/url?q=http://diclofenac-gel.ga

http://images.google.com.eg/url?q=http://voltaren-t.ml

# Edwardkix said on června 18, 2018 2:28:

http://maps.google.ee/url?q=http://doktoreisemann.ml

http://www.google.com.sa/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=25&ved=0CFkQFjAEOBQ&url=http://kamagra-legal.tk

http://maps.google.com.bh/url?q=http://kamagra-nl.tk

http://images.google.pt/url?q=http://kamagra-original.tk

https://www.google.mu/url?q=http://kamagra-wiki.tk

http://maps.google.ro/url?q=http://kamagra-wirkung.tk

# Michaelvasia said on června 18, 2018 2:49:

https://www.google.ie/url?sa=t&rct=j&q=&esrc=s&source=newssearch&cd=1&cad=rja&uact=8&ved=0cb8qqqioadaa&url=http://kamagra-einnahme.tk

http://maps.google.com.fj/url?q=http://kamagra-erfahrung.tk

http://maps.google.gr/url?q=http://sildenafil-100mg.tk

http://www.google.gr/url?sr=1&ct2=el_gr/3_0_s_0_1_a&sa=t&usg=afqjcngzvaa-udskp9rapxub2thcuzybyw&cid=52779090905638&url=http://sildenafil-orion.tk

http://lib.nus.edu.sg/digital/go.asp?url=http://diclofenac-25-mg.tk

https://maps.google.co.kr/url?q=http://voltaren-25-mg.ml

# Edwardkix said on června 18, 2018 4:08:

http://images.google.com.sg/url?source=imgres&ct=img&q=http://doktorkeil.ml

http://images.google.ae/url?q=http://doktorlentz.ml

https://maps.google.com/url?q=http://kamagra-oral.tk

http://www.dcf.ks.gov/pages/redirect.aspx?target=http://kamagra-polo.tk

http://www.google.com.sa/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=25&ved=0CFkQFjAEOBQ&url=http://kamagra-sildenafil.tk

http://maps.google.co.th/url?q=http://kamagra-wirkung.tk

# Michaelvasia said on června 18, 2018 4:44:

http://maps.google.pl/url?q=http://kamagra-de.tk

https://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CB8QFjAA&url=http://kamagra-frauen.tk

http://images.google.cz/url?q=http://sildenafil-accord.tk

http://maps.google.com.ec/url?q=http://sildenafil-orion.tk

http://www.google.rs/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=14&ved=0chmqfjanahukewirlfvnx9jhahwfxcwkhvwtcdu&url=http://diclofenac-alkohol.tk

https://www.transtats.bts.gov/exit.asp?url=http://diclofenac-tablett.tk

# Edwardkix said on června 18, 2018 6:17:

https://www.google.ie/url?sa=t&rct=j&q=&esrc=s&source=newssearch&cd=1&cad=rja&uact=8&ved=0cb8qqqioadaa&url=http://doktorkeil.ml

http://maps.google.com.ua/url?q=http://kamagra-legal.tk

http://maps.google.sk/url?q=http://kamagra-opinie.tk

http://maps.google.com.sa/url?q=http://kamagra-pharma.tk

http://maps.google.com.ua/url?q=http://kamagra-test.tk

https://www.nycgovparks.org/exit?url=http://jelly-kamagra.tk

# Michaelvasia said on června 18, 2018 6:18:

http://images.google.co.il/url?q=http://kamagra-deutschland.tk

http://maps.google.com.hk/url?q=http://kamagra-frauen.tk

http://maps.google.at/url?q=http://sildenafil-100mg.tk

http://maps.google.com.ly/url?q=http://sildenafil-kesto.tk

http://images.google.cz/url?q=http://diclofenac-gel.ga

http://images.google.fi/url?q=http://voltaren-50-mg.ml

# Edwardkix said on června 18, 2018 7:58:

http://www.google.at/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=14&ved=0CFUQFjADOAo&url=http://doktorkramer.ml

http://maps.google.com.ng/url?q=http://doktorlentz.ml

http://apps.sos.ky.gov/land/cities/linkto.asp?link=http://kamagra-nl.tk

http://images.google.at/url?q=http://kamagra-original.tk

http://maps.google.ae/url?q=http://kamagra-super.tk

http://maps.google.com.uy/url?q=http://free-kamagra.tk

Vytvoření nového komentáře

(povinný) 
(nepovinný)
(povinný) 
Opiš čísla, která vidíš na obrázku:

Search

Go


    Syndication

    Vyvojar.cz na prodej!