āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸāĻŋāĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨āĻ¸: āĻ¨āĻžāĻŽā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻĒāĻ°āĻŋāĻŽāĻžāĻ°ā§āĻœāĻ¨āĻžāĻ° āĻ—āĻ˛ā§āĻĒ, āĻŦāĻž "āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¸āĻžāĻŽāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡"

āĻ¸āĻžāĻ°āĻž āĻĻā§‡āĻļā§‡ āĻ¸ā§‡āĻ˛āĻ¸ āĻ…āĻĢāĻŋāĻ¸ āĻĨā§‡āĻ•ā§‡ āĻšāĻžāĻœāĻžāĻ° āĻšāĻžāĻœāĻžāĻ° āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ° āĻ āĻŋāĻ• āĻ•āĻ°ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŋāĻ†āĻ°āĻāĻŽ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒā§āĻ°āĻ¤āĻŋāĻĻāĻŋāĻ¨ āĻšāĻžāĻœāĻžāĻ° āĻšāĻžāĻœāĻžāĻ° āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤āĻŋ - āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻŦāĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻĻā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ—ā§‡āĻ° āĻ¤āĻĨā§āĻ¯āĨ¤ āĻāĻŦāĻ‚ āĻāĻ‡ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻāĻŦāĻ‚ āĻ–ā§āĻŦ āĻĻā§āĻ°ā§āĻ¤āĨ¤ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻ¨āĻžāĻŽā§‡ āĻ˜āĻŸā§‡āĨ¤

āĻ…āĻ¤āĻāĻŦ, āĻāĻŸāĻŋ āĻ†āĻļā§āĻšāĻ°ā§āĻ¯āĻœāĻ¨āĻ• āĻ¨āĻ¯āĻŧ āĻ¯ā§‡, āĻ†āĻŦāĻžāĻ°āĻ“ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻĄā§‡āĻŸāĻžāĻŦā§‡āĻ¸āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋāĻ¤ā§‡ "āĻ­āĻžāĻ°ā§€" āĻĒā§āĻ°āĻļā§āĻ¨āĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°āĻž - āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ VLIS āĻ•āĻ°ā§āĻĒā§‹āĻ°ā§‡āĻŸ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ, āĻ†āĻŽāĻŋ "āĻļā§€āĻ°ā§āĻˇā§‡" āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋ āĻ¨āĻžāĻŽ āĻĻā§āĻŦāĻžāĻ°āĻž "āĻĻā§āĻ°ā§āĻ¤" āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ• āĻ•āĻžāĻ°ā§āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯āĨ¤

āĻ¤āĻĻā§āĻĒāĻ°āĻŋ, āĻ†āĻ°āĻ“ āĻ¤āĻĻāĻ¨ā§āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨, āĻ¤āĻžāĻ°āĻĒāĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ…āĻŦāĻ¨āĻ¤āĻŋ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻĻāĻ˛ āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻ° āĻ§āĻžāĻ°āĻžāĻŦāĻžāĻšāĻŋāĻ• āĻ¸āĻŽāĻžāĻĒā§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§, āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•āĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻ°ā§āĻŦā§‹āĻ¤ā§āĻ¤āĻŽ āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ āĻĨā§‡āĻ•ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤

0: āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ•āĻŋ āĻšā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨

āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸāĻŋāĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨āĻ¸: āĻ¨āĻžāĻŽā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻĒāĻ°āĻŋāĻŽāĻžāĻ°ā§āĻœāĻ¨āĻžāĻ° āĻ—āĻ˛ā§āĻĒ, āĻŦāĻž "āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¸āĻžāĻŽāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡"[āĻ•ā§‡āĻĄāĻŋāĻĒāĻŋāĻ­āĻŋ āĻāĻ–āĻžāĻ¨ā§‡ āĻĨā§‡āĻ•ā§‡]

āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¯āĻ–āĻ¨ āĻ¨āĻžāĻŽ āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻ•āĻŸāĻŋ "āĻĻā§āĻ°ā§āĻ¤" āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛ā§‡ āĻ¤āĻ–āĻ¨ āĻ¤āĻžāĻ•ā§‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ•ā§€ āĻŦā§‹āĻāĻžāĻ¯āĻŧ? āĻāĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ•āĻ–āĻ¨āĻ‡ āĻāĻ•āĻŸāĻŋ "āĻ¨ā§āĻ¯āĻžāĻ¯ā§āĻ¯" āĻ¸āĻžāĻŦāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧ āĻ¨āĻž ... LIKE '%Ņ€ĐžĐˇĐ°%' - āĻ¸āĻŦ āĻĒāĻ°ā§‡, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¨āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° 'РОСаĐģиŅ' и 'МаĐŗаСиĐŊ РОСа'āĻ•āĻŋāĻ¨ā§āĻ¤ā§ 'ГŅ€ĐžĐˇĐ°' āĻāĻŽāĻ¨āĻ•āĻŋ āĻāĻŽāĻ¨āĻ•āĻŋ 'ДоĐŧ ДĐĩĐ´Đ° МоŅ€ĐžĐˇĐ°'.

āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻŽāĻžāĻ¨ā§‡ āĻĒāĻžāĻ°āĻŋāĻŦāĻžāĻ°āĻŋāĻ• āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¤āĻžāĻ•ā§‡ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻāĻ•āĻŸāĻŋ āĻļāĻŦā§āĻĻā§‡āĻ° āĻļā§āĻ°ā§āĻ¤ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°ā§āĻ¨ āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽā§‡ āĻāĻŦāĻ‚ āĻ†āĻ°ā§‹ āĻĒā§āĻ°āĻžāĻ¸āĻ™ā§āĻ—āĻŋāĻ• āĻ•āĻŋ āĻĻā§‡āĻ–āĻžāĻ¨ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻ™ā§āĻ—ā§‡ āĻ¸āĻ™ā§āĻ—ā§‡ - āĻ¸āĻžāĻŦāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ‡āĻ¨āĻĒā§āĻŸ āĻ¸āĻšāĨ¤

1: āĻŸāĻžāĻ¸ā§āĻ• āĻ¸ā§€āĻŽāĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨

āĻāĻŦāĻ‚ āĻ†āĻ°āĻ“ āĻŦā§‡āĻļāĻŋ, āĻāĻ•āĻœāĻ¨ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ āĻŦāĻŋāĻļā§‡āĻˇāĻ­āĻžāĻŦā§‡ āĻĒāĻ°āĻŋāĻšāĻ¯āĻŧ āĻ•āĻ°āĻŋāĻ¯āĻŧā§‡ āĻĻā§‡āĻŦā§‡āĻ¨ āĻ¨āĻž 'Ņ€ĐžĐˇ ĐŧĐ°ĐŗаС'āĻ¯āĻžāĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻļāĻŦā§āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ¸āĻ°ā§āĻ— āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ¨āĻž, āĻāĻ•āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻļāĻŦā§āĻĻāĻ—ā§āĻ˛āĻŋ āĻ‡āĻšā§āĻ›āĻžāĻ•ā§ƒāĻ¤āĻ­āĻžāĻŦā§‡ "āĻ†āĻ¨ā§āĻĄāĻžāĻ°-āĻāĻ¨ā§āĻŸāĻžāĻ°" āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻļā§‡āĻˇ āĻļāĻŦā§āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ…āĻ¨ā§‡āĻ• āĻ¸āĻšāĻœ - āĻĻā§‡āĻ–ā§āĻ¨ āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻ¸āĻžāĻ°ā§āĻš āĻ‡āĻžā§āĻœāĻŋāĻ¨ āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ā§ˇ

āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤, āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻĒā§āĻ°āĻŖāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻž āĻ…āĻ°ā§āĻ§ā§‡āĻ•ā§‡āĻ°āĻ“ āĻŦā§‡āĻļāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĨ¤ āĻ•āĻ–āĻ¨āĻ“ āĻ•āĻ–āĻ¨āĻ“ āĻ¸āĻžāĻŦāĻ§āĻžāĻ¨ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•ā§‡āĻ¸ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤.

āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻŽā§‚āĻ°ā§āĻ¤ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€ āĻ•āĻŋ āĻ•āĻ°ā§‡?

1.0: āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻ¸āĻžāĻ°ā§āĻš āĻ‡āĻžā§āĻœāĻŋāĻ¨

āĻ“āĻš, āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻ•āĻ āĻŋāĻ¨, āĻ†āĻĒāĻ¨āĻŋ āĻŽā§‹āĻŸā§‡āĻ“ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¨āĻž - āĻ†āĻ¸ā§āĻ¨ āĻāĻŸāĻŋ āĻĄā§‡āĻ­āĻĒāĻ¸āĻ•ā§‡ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•! āĻ¤āĻžāĻĻā§‡āĻ° āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻŦāĻžāĻ‡āĻ°ā§‡āĻ° āĻ¸āĻžāĻ°ā§āĻš āĻ‡āĻžā§āĻœāĻŋāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĻāĻŋāĻ¨: āĻ¸ā§āĻĢāĻŋāĻ™ā§āĻ•āĻ¸, āĻ‡āĻ˛āĻžāĻ¸ā§āĻŸāĻŋāĻ• āĻ¸āĻžāĻ°ā§āĻš, ...

āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻĻāĻ•ā§āĻˇāĻ¤āĻžāĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§‡āĻ•ā§āĻˇāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°ā§€, āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻžāĻĒā§‡āĻ•ā§āĻˇ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ¨āĻ¯āĻŧ, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻĄā§‡āĻŸāĻžāĻ° āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻžāĻ¤ā§‡ āĻŽā§‹āĻŸāĻžāĻŽā§āĻŸāĻŋ āĻ‰āĻšā§āĻš āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛āĻ¤āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ - āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻāĻ–āĻ¨ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻĄ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°ā§‡āĻ›ā§‡ 'МаĐŗаСиĐŊ РОСа', āĻ¤āĻžāĻ°āĻĒāĻ° 5-10 āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄ āĻĒāĻ°ā§‡ āĻ¤āĻŋāĻ¨āĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻŽāĻ¨ā§‡ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯ā§‡ āĻ¤āĻŋāĻ¨āĻŋ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ‡āĻŽā§‡āĻ˛āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻ­ā§āĻ˛ā§‡ āĻ—ā§‡āĻ›ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ āĻŋāĻ• āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ā§ˇ

āĻ…āĻ¤āĻāĻŦ - āĻšāĻ˛ā§āĻ¨ "āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ" āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°ā§āĻ¨. āĻ¸ā§ŒāĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤, PostgreSQL āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ, āĻāĻŦāĻ‚ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ - āĻ†āĻŽāĻ°āĻž āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻŦāĨ¤

1.1: "āĻ¸ā§Ž" āĻ¸āĻžāĻŦāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚

āĻ†āĻŽāĻ°āĻž "āĻ¸āĻžāĻŦāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚" āĻļāĻŦā§āĻĻāĻŸāĻŋāĻ•ā§‡ āĻ†āĻāĻ•āĻĄāĻŧā§‡ āĻĨāĻžāĻ•āĻŋāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ āĻŋāĻ• āĻ¸āĻžāĻŦāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ (āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻžāĻ“!) āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸ā§‚āĻšāĻ• āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻšāĻŽā§ŽāĻ•āĻžāĻ° āĻ†āĻ›ā§‡ pg_trgm āĻŽāĻĄāĻŋāĻ‰āĻ˛! āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŸāĻŋ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻŦāĻžāĻ›āĻžāĻ‡ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡āĨ¤

āĻ†āĻ¸ā§āĻ¨ āĻŽāĻĄā§‡āĻ˛āĻŸāĻŋāĻ° āĻ¸āĻ°āĻ˛āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻĒā§āĻ˛ā§‡āĻŸ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŋ:

CREATE TABLE firms(
  id
    serial
      PRIMARY KEY
, name
    text
);

āĻ†āĻŽāĻ°āĻž āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻˇā§āĻ āĻžāĻ¨ā§‡āĻ° 7.8 āĻŽāĻŋāĻ˛āĻŋāĻ¯āĻŧāĻ¨ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§‚āĻšāĻŋāĻŦāĻĻā§āĻ§ āĻ•āĻ°āĻŋ:

CREATE EXTENSION pg_trgm;
CREATE INDEX ON firms USING gin(lower(name) gin_trgm_ops);

āĻ¸āĻžāĻŦāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻĨāĻŽ 10āĻŸāĻŋ āĻ°ā§‡āĻ•āĻ°ā§āĻĄā§‡āĻ° āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•:

SELECT
  *
FROM
  firms
WHERE
  lower(name) ~ ('(^|s)' || 'Ņ€ĐžĐˇĐ°')
ORDER BY
  lower(name) ~ ('^' || 'Ņ€ĐžĐˇĐ°') DESC -- ŅĐŊĐ°Ņ‡Đ°ĐģĐ° "ĐŊĐ°Ņ‡Đ¸ĐŊĐ°ŅŽŅ‰Đ¸ĐĩŅŅ ĐŊĐ°"
, lower(name) -- ĐžŅŅ‚Đ°ĐģŅŒĐŊĐžĐĩ ĐŋĐž Đ°ĐģŅ„авиŅ‚Ņƒ
LIMIT 10;

āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸāĻŋāĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨āĻ¸: āĻ¨āĻžāĻŽā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻĒāĻ°āĻŋāĻŽāĻžāĻ°ā§āĻœāĻ¨āĻžāĻ° āĻ—āĻ˛ā§āĻĒ, āĻŦāĻž "āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¸āĻžāĻŽāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡"
[explain.tensor.ru āĻĻā§‡āĻ–ā§āĻ¨]

āĻ†āĻšā§āĻ›āĻž, āĻāĻ°āĻ•āĻŽ... 26ms, 31MB āĻ¤āĻĨā§āĻ¯ āĻāĻŦāĻ‚ 1.7K āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ•āĻ°āĻž āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻĒāĻĄāĻŧā§āĻ¨ - 10 āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯āĨ¤ āĻ“āĻ­āĻžāĻ°āĻšā§‡āĻĄ āĻ–ā§āĻŦ āĻŦā§‡āĻļāĻŋ, āĻāĻŸāĻž āĻ•āĻŋ āĻ†āĻ°āĻ“ āĻĻāĻ•ā§āĻˇ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ?

1.2: āĻĒāĻžāĻ ā§āĻ¯ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨? āĻāĻŸāĻž FTS!

āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡, PostgreSQL āĻāĻ•āĻŸāĻŋ āĻ–ā§āĻŦ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĒāĻžāĻ ā§āĻ¯ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ‡āĻžā§āĻœāĻŋāĻ¨ (āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĒāĻžāĻ ā§āĻ¯ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨), āĻ‰āĻĒāĻ¸āĻ°ā§āĻ— āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻ¸āĻŽā§āĻ­āĻžāĻŦāĻ¨āĻž āĻ¸āĻšāĨ¤ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻĻāĻ°āĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡! āĻ†āĻ¸ā§āĻ¨ āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŋ:

CREATE INDEX ON firms USING gin(to_tsvector('simple'::regconfig, lower(name)));

SELECT
  *
FROM
  firms
WHERE
  to_tsvector('simple'::regconfig, lower(name)) @@ to_tsquery('simple', 'Ņ€ĐžĐˇĐ°:*')
ORDER BY
  lower(name) ~ ('^' || 'Ņ€ĐžĐˇĐ°') DESC
, lower(name)
LIMIT 10;

āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸāĻŋāĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨āĻ¸: āĻ¨āĻžāĻŽā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻĒāĻ°āĻŋāĻŽāĻžāĻ°ā§āĻœāĻ¨āĻžāĻ° āĻ—āĻ˛ā§āĻĒ, āĻŦāĻž "āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¸āĻžāĻŽāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡"
[explain.tensor.ru āĻĻā§‡āĻ–ā§āĻ¨]

āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛āĻ•āĻ°āĻŖ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻ•āĻŸā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡āĻ›ā§‡, āĻ¸āĻŽāĻ¯āĻŧāĻ•ā§‡ āĻ…āĻ°ā§āĻ§ā§‡āĻ• āĻ•āĻ°ā§‡ āĻ•ā§‡āĻŸā§‡āĻ›ā§‡ 11ms. āĻšā§āĻ¯āĻžāĻ, āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ° 1.5 āĻ—ā§āĻŖ āĻ•āĻŽ āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ - āĻŽā§‹āĻŸ 20MB. āĻāĻŦāĻ‚ āĻāĻ–āĻžāĻ¨ā§‡ āĻ•āĻŽ - āĻ­āĻžāĻ˛, āĻ•āĻžāĻ°āĻŖ āĻ†āĻŽāĻ°āĻž āĻ¯āĻ¤ āĻŦāĻĄāĻŧ āĻ­āĻ˛āĻŋāĻ‰āĻŽ āĻŦāĻŋāĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻŋ, āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻŽāĻŋāĻ¸ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽā§āĻ­āĻžāĻŦāĻ¨āĻž āĻ¤āĻ¤ āĻŦā§‡āĻļāĻŋ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ¸ā§āĻ• āĻĨā§‡āĻ•ā§‡ āĻĒāĻĄāĻŧāĻž āĻĄā§‡āĻŸāĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻĒā§ƒāĻˇā§āĻ āĻž āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ "āĻŦā§āĻ°ā§‡āĻ•"āĨ¤

1.3: āĻāĻ–āĻ¨āĻ“ āĻ˛āĻžāĻ‡āĻ•?

āĻ†āĻ—ā§‡āĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ¸āĻŦāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ­āĻžāĻ˛ā§‹, āĻ¤āĻŦā§‡ āĻĻāĻŋāĻ¨ā§‡ āĻāĻ• āĻ˛āĻžāĻ– āĻŦāĻžāĻ° āĻŸāĻžāĻ¨āĻ˛ā§‡āĻ‡ āĻšāĻ˛āĻŦā§‡ 2TB āĻĄā§‡āĻŸāĻž āĻĒāĻĄāĻŧā§āĻ¨āĨ¤ āĻ¸āĻ°ā§āĻŦā§‹āĻ¤ā§āĻ¤āĻŽ - āĻŽā§‡āĻŽāĻ°āĻŋ āĻĨā§‡āĻ•ā§‡, āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻžāĻ¨ āĻ¨āĻž āĻšāĻ¨ āĻ¤āĻŦā§‡ āĻĄāĻŋāĻ¸ā§āĻ• āĻĨā§‡āĻ•ā§‡āĨ¤ āĻ¤āĻžāĻ‡ āĻ†āĻ¸ā§āĻ¨ āĻāĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŋāĨ¤

āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ•āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻšāĻžāĻ¯āĻŧ āĻ¤āĻž āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻŦā§‡āĻ¨ āĻĒā§āĻ°āĻĨāĻŽā§‡ "āĻ¯āĻž āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§...". āĻ¤āĻžāĻ‡ āĻāĻŸāĻŋ āĻ¤āĻžāĻ° āĻŦāĻŋāĻļā§āĻĻā§āĻ§āĻ¤āĻŽ āĻĢāĻ°ā§āĻŽ. āĻ‰āĻĒāĻ¸āĻ°ā§āĻ— āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡ text_pattern_ops! āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ 10āĻŸāĻŋ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ "āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻ¨āĻž āĻĨāĻžāĻ•ā§‡" āĻ¤āĻŦā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° FTS āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻšāĻŦā§‡:

CREATE INDEX ON firms(lower(name) text_pattern_ops);

SELECT
  *
FROM
  firms
WHERE
  lower(name) LIKE ('Ņ€ĐžĐˇĐ°' || '%')
LIMIT 10;

āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸāĻŋāĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨āĻ¸: āĻ¨āĻžāĻŽā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻĒāĻ°āĻŋāĻŽāĻžāĻ°ā§āĻœāĻ¨āĻžāĻ° āĻ—āĻ˛ā§āĻĒ, āĻŦāĻž "āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¸āĻžāĻŽāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡"
[explain.tensor.ru āĻĻā§‡āĻ–ā§āĻ¨]

āĻšāĻŽā§ŽāĻ•āĻžāĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž - āĻŽā§‹āĻŸ 0.05ms āĻāĻŦāĻ‚ āĻŽāĻžāĻ¤ā§āĻ° 100KB āĻāĻ° āĻŦā§‡āĻļāĻŋ āĻĒāĻĄāĻŧā§āĻ¨! āĻ†āĻŽāĻ°āĻž āĻļā§āĻ§ā§ āĻ­ā§āĻ˛ā§‡ āĻ—ā§‡āĻ›āĻŋ āĻ¨āĻžāĻŽ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ āĻ¸āĻžāĻœāĻžāĻ“āĻ¯āĻžāĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡ āĻšāĻžāĻ°āĻŋāĻ¯āĻŧā§‡ āĻ¨āĻž āĻ¯āĻžāĻ¯āĻŧ:

SELECT
  *
FROM
  firms
WHERE
  lower(name) LIKE ('Ņ€ĐžĐˇĐ°' || '%')
ORDER BY
  lower(name)
LIMIT 10;

āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸāĻŋāĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨āĻ¸: āĻ¨āĻžāĻŽā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻĒāĻ°āĻŋāĻŽāĻžāĻ°ā§āĻœāĻ¨āĻžāĻ° āĻ—āĻ˛ā§āĻĒ, āĻŦāĻž "āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¸āĻžāĻŽāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡"
[explain.tensor.ru āĻĻā§‡āĻ–ā§āĻ¨]

āĻ“āĻš, āĻ•āĻŋāĻ›ā§ āĻ†āĻ° āĻāĻ¤ āĻ¸ā§āĻ¨ā§āĻĻāĻ° āĻ¨āĻ¯āĻŧ - āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§‚āĻšāĻ• āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¤āĻŦā§‡ āĻŦāĻžāĻ›āĻžāĻ‡ āĻ•āĻ°āĻž āĻāĻŸāĻŋāĻ•ā§‡ āĻ…āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ•āĻ°ā§‡ ... āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻāĻŸāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻ†āĻ—ā§‡āĻ° āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ—ā§āĻŖ āĻŦā§‡āĻļāĻŋ āĻĻāĻ•ā§āĻˇ, āĻ¤āĻŦā§‡ ...

1.4: "āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§‡āĻˇ āĻ•āĻ°ā§āĻ¨"

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻŸāĻŋ āĻ¸ā§‚āĻšāĻ• āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒāĻ°āĻŋāĻ¸āĻ° āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻŦāĻžāĻ›āĻžāĻ‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• - āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ btree!

CREATE INDEX ON firms(lower(name));

āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻŸāĻŋ "āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤" āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:

SELECT
  *
FROM
  firms
WHERE
  lower(name) >= 'Ņ€ĐžĐˇĐ°' AND
  lower(name) <= ('Ņ€ĐžĐˇĐ°' || chr(65535)) -- Đ´ĐģŅ UTF8, Đ´ĐģŅ ОдĐŊОйаКŅ‚ОвŅ‹Ņ… - chr(255)
ORDER BY
   lower(name)
LIMIT 10;

āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸāĻŋāĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨āĻ¸: āĻ¨āĻžāĻŽā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻĒāĻ°āĻŋāĻŽāĻžāĻ°ā§āĻœāĻ¨āĻžāĻ° āĻ—āĻ˛ā§āĻĒ, āĻŦāĻž "āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¸āĻžāĻŽāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡"
[explain.tensor.ru āĻĻā§‡āĻ–ā§āĻ¨]

āĻšāĻŽā§ŽāĻ•āĻžāĻ° - āĻāĻŦāĻ‚ āĻŦāĻžāĻ›āĻžāĻ‡ āĻ•āĻžāĻœ, āĻāĻŦāĻ‚ āĻ¸āĻŽā§āĻĒāĻĻ āĻ–āĻ°āĻš āĻ…āĻŦāĻļā§‡āĻˇ "āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ¸ā§āĻ•ā§‹āĻĒāĻŋāĻ•", "āĻŦāĻŋāĻļā§āĻĻā§āĻ§" FTS āĻāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻšāĻžāĻœāĻžāĻ° āĻ—ā§āĻŖ āĻŦā§‡āĻļāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°! āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻ• āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°āĻž āĻ…āĻŦāĻļā§‡āĻˇ:

(
  SELECT
    *
  FROM
    firms
  WHERE
    lower(name) >= 'Ņ€ĐžĐˇĐ°' AND
    lower(name) <= ('Ņ€ĐžĐˇĐ°' || chr(65535)) -- Đ´ĐģŅ UTF8, Đ´ĐģŅ ОдĐŊОйаКŅ‚ОвŅ‹Ņ… ĐēОдиŅ€ĐžĐ˛ĐžĐē - chr(255)
  ORDER BY
     lower(name)
  LIMIT 10
)
UNION ALL
(
  SELECT
    *
  FROM
    firms
  WHERE
    to_tsvector('simple'::regconfig, lower(name)) @@ to_tsquery('simple', 'Ņ€ĐžĐˇĐ°:*') AND
    lower(name) NOT LIKE ('Ņ€ĐžĐˇĐ°' || '%') -- "ĐŊĐ°Ņ‡Đ¸ĐŊĐ°ŅŽŅ‰Đ¸ĐĩŅŅ ĐŊĐ°" ĐŧŅ‹ ŅƒĐļĐĩ ĐŊĐ°ŅˆĐģи вŅ‹ŅˆĐĩ
  ORDER BY
    lower(name) ~ ('^' || 'Ņ€ĐžĐˇĐ°') DESC -- иŅĐŋĐžĐģŅŒĐˇŅƒĐĩĐŧ Ņ‚Ņƒ ĐļĐĩ ŅĐžŅ€Ņ‚иŅ€ĐžĐ˛ĐēŅƒ, Ņ‡Ņ‚ОйŅ‹ НЕ ĐŋОКŅ‚и ĐŋĐž btree-иĐŊĐ´ĐĩĐēŅŅƒ
  , lower(name)
  LIMIT 10
)
LIMIT 10;

āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–ā§āĻ¯ āĻ¯ā§‡ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻžāĻŦāĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋāĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻĨāĻŽāĻŸāĻŋ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻžāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ•āĻŽ āĻĢāĻŋāĻ°ā§‡ āĻ†āĻ¸ā§‡ āĻ—āĻ¤ LIMIT āĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĨ¤ āĻĒā§āĻ°āĻļā§āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻžāĻ° āĻāĻ‡ āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡, āĻ†āĻŽāĻŋ āĻ†āĻ—ā§‡āĻ‡ āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋ.

āĻ¤āĻžāĻ‡ āĻšā§āĻ¯āĻžāĻ, āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻāĻ•āĻ‡ āĻ¸āĻžāĻĨā§‡ btree āĻāĻŦāĻ‚ gin āĻ†āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĒāĻ°āĻŋāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¨āĻ—āĻ¤āĻ­āĻžāĻŦā§‡ āĻĻā§‡āĻ–āĻž āĻ—ā§‡āĻ›ā§‡ āĻ¯ā§‡ 10% āĻāĻ°āĻ“ āĻ•āĻŽ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡ āĻĒā§ŒāĻāĻ›āĻžāĻ¯āĻŧ. āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻ†āĻ—ā§‡ āĻĨā§‡āĻ•ā§‡ āĻœāĻžāĻ¨āĻž āĻŸāĻžāĻ¸ā§āĻ•ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡, āĻ†āĻŽāĻ°āĻž āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸āĻŽā§āĻĒāĻĻā§‡āĻ° āĻŽā§‹āĻŸ āĻ–āĻ°āĻš āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻāĻ• āĻšāĻžāĻœāĻžāĻ° āĻ—ā§āĻŖ āĻ•āĻŽāĻžāĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋ!

1.5*: āĻĢāĻžāĻ‡āĻ˛ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻ•āĻ°ā§āĻ¨

āĻŠāĻ°ā§āĻ§ā§āĻŦāĻ¤āĻ¨ LIKE āĻ†āĻŽāĻ°āĻž āĻ­ā§āĻ˛ āĻŦāĻžāĻ›āĻžāĻ‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻŦāĻŋāĻ°āĻ¤ āĻ›āĻŋāĻ˛. āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡ "āĻ¸āĻ āĻŋāĻ• āĻĒāĻĨā§‡ āĻ¸ā§‡āĻŸ" āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ āĻšāĻ¯āĻŧ ASC. āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ†āĻĒāĻ¨āĻŋ āĻ§āĻžāĻ°āĻžāĻ¯āĻŧ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻžāĻœāĻžāĻ¨ā§‹āĻ° āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°ā§‡āĻ° āĻ¨āĻžāĻŽ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ USING. āĻŦāĻžāĻ›āĻžāĻ‡ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻŦāĻŋ-āĻŸā§āĻ°āĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĻĻā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻĒāĻ°āĻŋāĻŦāĻžāĻ°ā§‡āĻ° "āĻāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ•āĻŽ" āĻŦāĻž "āĻāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻŦāĻĄāĻŧ" āĻ¸āĻĻāĻ¸ā§āĻ¯ āĻšāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ ASC āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¸āĻŽāĻ¤ā§āĻ˛ā§āĻ¯ USING < и DESC āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¸āĻŽāĻ¤ā§āĻ˛ā§āĻ¯ USING >.

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, "āĻ•āĻŽ" āĻšāĻ¯āĻŧ ~<~:

SELECT
  *
FROM
  firms
WHERE
  lower(name) LIKE ('Ņ€ĐžĐˇĐ°' || '%')
ORDER BY
  lower(name) USING ~<~
LIMIT 10;

āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸāĻŋāĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨āĻ¸: āĻ¨āĻžāĻŽā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻĒāĻ°āĻŋāĻŽāĻžāĻ°ā§āĻœāĻ¨āĻžāĻ° āĻ—āĻ˛ā§āĻĒ, āĻŦāĻž "āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¸āĻžāĻŽāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡"
[explain.tensor.ru āĻĻā§‡āĻ–ā§āĻ¨]

2: āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ—ā§āĻ˛āĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻŸāĻ• āĻšāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧ

āĻāĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻŸāĻŋ āĻ›āĻ¯āĻŧ āĻŽāĻžāĻ¸ āĻŦāĻž āĻāĻ• āĻŦāĻ›āĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ "āĻŦā§āĻ°ā§" āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ°ā§‡āĻ–ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ¸ā§āĻŽāĻ¯āĻŧā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻŽāĻ°āĻž āĻ†āĻŦāĻžāĻ° āĻŽā§‡āĻŽāĻ°āĻŋāĻ° āĻŽā§‹āĻŸ āĻĻā§ˆāĻ¨āĻŋāĻ• "āĻĒāĻžāĻŽā§āĻĒāĻŋāĻ‚" āĻāĻ° āĻ¸ā§‚āĻšāĻ•āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ "āĻļā§€āĻ°ā§āĻˇā§‡" āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ‡ (āĻŦāĻžāĻĢāĻžāĻ° āĻļā§‡āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻšāĻŋāĻŸ) āĻ‡āĻ¨ 5.5TB - āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻāĻŸāĻŋ āĻŽā§‚āĻ˛āĻ¤ āĻ›āĻŋāĻ˛ āĻ¤āĻžāĻ° āĻšā§‡āĻ¯āĻŧā§‡āĻ“ āĻŦā§‡āĻļāĻŋāĨ¤

āĻ¨āĻž, āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻ¸āĻž āĻŦā§‡āĻĄāĻŧā§‡āĻ›ā§‡, āĻāĻŦāĻ‚ āĻ•āĻžāĻœā§‡āĻ° āĻšāĻžāĻĒ āĻŦā§‡āĻĄāĻŧā§‡āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻ‡ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖā§‡ āĻ¨āĻ¯āĻŧ! āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻāĻ–āĻžāĻ¨ā§‡ āĻ•āĻŋāĻ›ā§ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ¨āĻ¯āĻŧ - āĻ†āĻ¸ā§āĻ¨ āĻāĻŸāĻŋ āĻŦā§‡āĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ•āĨ¤

2.1: āĻĒā§‡āĻœāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻŽ

āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽāĻ¯āĻŧā§‡, āĻ…āĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĻāĻ˛ āĻāĻ•āĻ‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻ¸āĻžāĻŦāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ¤ā§‡ "āĻāĻžāĻāĻĒ" āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ•āĻ°āĻ¤ā§‡ āĻšā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻāĻŦāĻ‚ āĻĒā§‡āĻœāĻŋāĻ¨ā§‡āĻļāĻ¨ āĻ›āĻžāĻĄāĻŧāĻž āĻ•āĻŋ āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋ? āĻāĻ° āĻāĻŸāĻž āĻ¸ā§āĻ•ā§āĻ°ā§ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•!

( ... LIMIT <N> + 10)
UNION ALL
( ... LIMIT <N> + 10)
LIMIT 10 OFFSET <N>;

āĻāĻ–āĻ¨ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°ā§‡āĻ° āĻĒāĻ•ā§āĻˇā§‡ āĻ¸ā§āĻŸā§āĻ°ā§‡āĻ¨āĻŋāĻ‚ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ "āĻĒā§ƒāĻˇā§āĻ āĻž-āĻŸāĻžāĻ‡āĻĒ" āĻ˛ā§‹āĻĄāĻŋāĻ‚ āĻ¸āĻš āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸāĻžāĻ° āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻ¸āĻŽā§āĻ­āĻŦ āĻ›āĻŋāĻ˛ā§ˇ

āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ†āĻ¸āĻ˛ā§‡, āĻĄā§‡āĻŸāĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻĒā§ƒāĻˇā§āĻ āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ°āĻ“ āĻŦā§‡āĻļāĻŋ āĻ•āĻ°ā§‡ āĻĒāĻĄāĻŧāĻž āĻšāĻ¯āĻŧ (āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻĨā§‡āĻ•ā§‡, āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻŦāĻžāĻ¤āĻŋāĻ˛ āĻ•āĻ°āĻŦ, āĻāĻŦāĻ‚ āĻĒāĻ›āĻ¨ā§āĻĻāĻ¸āĻ‡ "āĻ˛ā§‡āĻœ") - āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĻā§āĻŦā§āĻ¯āĻ°ā§āĻĨāĻšā§€āĻ¨ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸāĻŋ-āĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻŦāĻ‚ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻ•ā§€ āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻ¤ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻ†āĻ°āĻ“ āĻ¸āĻ āĻŋāĻ• āĻšāĻŦā§‡, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻ°āĻ“ āĻāĻ•āĻŦāĻžāĻ°āĨ¤

2.2: āĻŦāĻšāĻŋāĻ°āĻžāĻ—āĻ¤ āĻšāĻžāĻ¨

āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽāĻ¯āĻŧā§‡, āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€ āĻšā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻš āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¨āĻŽā§āĻ¨āĻž āĻŦā§ˆāĻšāĻŋāĻ¤ā§āĻ°ā§āĻ¯ āĻ…āĻ¨ā§āĻ¯ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĨā§‡āĻ•ā§‡, āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§‹ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻĒā§āĻ°āĻļā§āĻ¨āĻŸāĻŋ CTE-āĻ¤ā§‡ āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛:

WITH q AS (
  ...
  LIMIT <N> + 10
)
SELECT
  *
, (SELECT ...) sub_query -- ĐēĐ°ĐēОК-Ņ‚Đž СаĐŋŅ€ĐžŅ Đē ŅĐ˛ŅĐˇĐ°ĐŊĐŊОК Ņ‚Đ°ĐąĐģиŅ†Đĩ
FROM
  q
LIMIT 10 OFFSET <N>;

āĻāĻŦāĻ‚ āĻ¤āĻŦā§āĻ“, āĻ–āĻžāĻ°āĻžāĻĒ āĻ¨āĻ¯āĻŧ, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ¸āĻžāĻŦāĻ•ā§‹āĻ¯āĻŧāĻžāĻ°āĻŋāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° 10āĻŸāĻŋ āĻĢā§‡āĻ°āĻ¤ āĻ°ā§‡āĻ•āĻ°ā§āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŽā§‚āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻšāĻ¯āĻŧ ...

2.3: āĻ†āĻ˛āĻžāĻĻāĻž āĻ…āĻ¨ā§āĻ­ā§‚āĻ¤āĻŋāĻšā§€āĻ¨ āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ°ā§āĻĻāĻ¯āĻŧ

āĻ•ā§‹āĻĨāĻžāĻ“ ā§¨āĻ¯āĻŧ āĻ¸āĻžāĻŦāĻ•ā§āĻ¯āĻŧā§‡āĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻāĻ°āĻ•āĻŽ āĻŦāĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻ¨āĻŋāĻ–ā§‡āĻžāĻāĻœ NOT LIKE āĻļāĻ°ā§āĻ¤. āĻāĻ° āĻĒāĻ°ā§‡āĻ‡ āĻŦā§‹āĻāĻž āĻ¯āĻžāĻ¯āĻŧ UNION ALL āĻĢāĻŋāĻ°āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡ āĻ•āĻŋāĻ›ā§ āĻāĻ¨ā§āĻŸā§āĻ°āĻŋ āĻĻā§āĻ‡āĻŦāĻžāĻ° - āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻļā§āĻ°ā§āĻ¤ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ, āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ†āĻŦāĻžāĻ° - āĻāĻ‡ āĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻļāĻŦā§āĻĻā§‡āĻ° āĻļā§āĻ°ā§āĻ¤ā§‡āĨ¤ āĻ¸ā§€āĻŽāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡, 2āĻ¯āĻŧ āĻ¸āĻžāĻŦāĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻĒā§āĻ°āĻĨāĻŽāĻŸāĻŋāĻ° āĻ°ā§‡āĻ•āĻ°ā§āĻĄā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽā§‡āĻ˛ā§‡āĨ¤

āĻ•āĻžāĻ°āĻŖ āĻ–ā§‹āĻāĻœāĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻāĻ•āĻœāĻ¨ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ° āĻ•ā§€ āĻ•āĻ°ā§‡āĻ¨?... āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¨āĻ¯āĻŧ!

  • āĻ†āĻ•āĻžāĻ° āĻĻā§āĻŦāĻŋāĻ—ā§āĻŖ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ¨āĻŽā§āĻ¨āĻž
  • DISTINCT āĻ†āĻ°ā§‹āĻĒ āĻ•āĻ°ā§āĻ¨āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻ• āĻĻā§ƒāĻˇā§āĻŸāĻžāĻ¨ā§āĻ¤ āĻĒā§‡āĻ¤ā§‡

WITH q AS (
  ( ... LIMIT <2 * N> + 10)
  UNION ALL
  ( ... LIMIT <2 * N> + 10)
  LIMIT <2 * N> + 10
)
SELECT DISTINCT
  *
, (SELECT ...) sub_query
FROM
  q
LIMIT 10 OFFSET <N>;

āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻāĻŸāĻŋ āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ¯ā§‡ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻŸāĻŋ, āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤, āĻ āĻŋāĻ• āĻāĻ•āĻ‡, āĻ¤āĻŦā§‡ 2āĻ¯āĻŧ CTE āĻ¸āĻžāĻŦāĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋāĻ¤ā§‡ "āĻ‰āĻĄāĻŧāĻ¤ā§‡" āĻ¯āĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸ā§āĻ¯ā§‹āĻ— āĻ…āĻ¨ā§‡āĻ• āĻŦā§‡āĻļāĻŋ āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡, āĻāĻŦāĻ‚ āĻāĻŽāĻ¨āĻ•āĻŋ āĻāĻŸāĻŋ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡, āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ­āĻžāĻŦā§‡ āĻ†āĻ°ā§‹ āĻĒāĻĄāĻŧā§āĻ¨.

āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻĻā§āĻƒāĻ–āĻœāĻ¨āĻ• āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ¨āĻ¯āĻŧāĨ¤ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻ˛ā§‡āĻ›ā§‡āĻ¨ DISTINCT āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻœāĻ¨ā§āĻ¯ āĻ¨āĻ¯āĻŧ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻŦāĻžāĻ°ā§‡ āĻ¸āĻŦ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ, āĻ¤āĻžāĻ°āĻĒāĻ° sub_query āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ - āĻ¸āĻžāĻŦāĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛āĨ¤ āĻāĻ–āĻ¨, āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ DISTINCT, āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻ›āĻŋāĻ˛ 10āĻŸāĻŋ āĻ¸āĻžāĻŦāĻ•ā§‹āĻ¯āĻŧāĻžāĻ°āĻŋ āĻ¨āĻ¯āĻŧ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ <2 * N> + 10!

2.4: āĻ¸āĻ°ā§āĻŦā§‹āĻĒāĻ°āĻŋ āĻ¸āĻšāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻž!

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€āĻ°āĻž āĻŦā§‡āĻāĻšā§‡ āĻ›āĻŋāĻ˛ā§‡āĻ¨ - āĻ¤āĻžāĻ°āĻž āĻļā§‹āĻ• āĻ•āĻ°ā§‡āĻ¨āĻŋ, āĻ•āĻžāĻ°āĻŖ āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ¤ā§‡ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯ N āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ "āĻ¸ā§āĻ•ā§āĻ°ā§ āĻ†āĻĒ" āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ "āĻĒā§ƒāĻˇā§āĻ āĻž" āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻĻā§€āĻ°ā§āĻ˜āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻŽāĻ¨ā§āĻĨāĻ°āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ¤ āĻ§ā§ˆāĻ°ā§āĻ¯ āĻ›āĻŋāĻ˛ āĻ¨āĻžāĨ¤

āĻ¯āĻ¤āĻ•ā§āĻˇāĻŖ āĻ¨āĻž āĻ…āĻ¨ā§āĻ¯ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡āĻ° āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€āĻ°āĻž āĻ¤āĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻ†āĻ¸ā§‡āĻ¨, āĻāĻŦāĻ‚ āĻāĻŽāĻ¨ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¨āĻž āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ - āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻ†āĻŽāĻ°āĻž āĻ•āĻŋāĻ›ā§ āĻ¨āĻŽā§āĻ¨āĻž āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸā§āĻ•āĻ°ā§‹ āĻ¨āĻŋāĻ‡, āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻļāĻ°ā§āĻ¤ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ•āĻ°āĻŋ, āĻĢāĻ˛āĻžāĻĢāĻ˛āĻŸāĻŋ āĻ†āĻāĻ•āĻŋ, āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ…āĻ‚āĻļāĻŸāĻŋ (āĻ¯āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ N āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻ•āĻ°ā§‡ āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ), āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¨āĻŸāĻŋ āĻĒā§‚āĻ°āĻŖ āĻ¨āĻž āĻ•āĻ°āĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤āĨ¤

āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻāĻ•āĻŸāĻŋ āĻ§āĻ°āĻž āĻ¨āĻŽā§āĻ¨āĻž āĻŽāĻ§ā§āĻ¯ā§‡ N āĻĒā§āĻ°āĻžāĻ¯āĻŧ 17K āĻĒā§ŒāĻāĻ›ā§‡āĻ›ā§‡, āĻāĻŦāĻ‚ āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ• āĻĻāĻŋāĻ¨ā§‡, āĻ…āĻ¨ā§āĻ¤āĻ¤ 4K āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ—ā§āĻ˛āĻŋ "āĻļā§ƒāĻ™ā§āĻ–āĻ˛ āĻŦāĻ°āĻžāĻŦāĻ°" āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ¤āĻžāĻĻā§‡āĻ° āĻļā§‡āĻˇ āĻ¸āĻžāĻšāĻ¸ā§€āĻ­āĻžāĻŦā§‡ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻĒā§āĻ°āĻ¤āĻŋ 1GB āĻŽā§‡āĻŽāĻ°āĻŋ...

āĻŽā§‹āĻŸā§‡

āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸāĻŋāĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨āĻ¸: āĻ¨āĻžāĻŽā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻĒāĻ°āĻŋāĻŽāĻžāĻ°ā§āĻœāĻ¨āĻžāĻ° āĻ—āĻ˛ā§āĻĒ, āĻŦāĻž "āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¸āĻžāĻŽāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡"

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨