{"id":3751,"date":"2016-09-09T09:16:14","date_gmt":"2016-09-09T06:16:14","guid":{"rendered":"http:\/\/iko.drundrun.org\/blog\/?p=3751"},"modified":"2016-09-09T09:16:14","modified_gmt":"2016-09-09T06:16:14","slug":"%d0%be%d0%bf%d1%82%d0%b8%d0%bc%d0%b8%d0%b7%d0%b8%d1%80%d0%b0%d0%bd%d0%b5-%d0%bd%d0%b0-mysql-%d0%b7%d0%b0%d1%8f%d0%b2%d0%ba%d0%b8-%d0%bf%d1%80%d0%b8-%d0%b3%d0%b5%d0%be%d0%bb%d0%be%d0%ba%d0%b0%d0%bb","status":"publish","type":"post","link":"https:\/\/iko.drundrun.org\/blog\/?p=3751","title":{"rendered":"\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 MySQL \u0437\u0430\u044f\u0432\u043a\u0438 \u043f\u0440\u0438 \u0433\u0435\u043e\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435"},"content":{"rendered":"<p>\u041d\u0430\u0432\u044f\u0440\u043d\u043e \u043f\u043e\u0432\u0435\u0447\u0435\u0442\u043e \u043e\u0442 \u0432\u0430\u0441 \u0437\u043d\u0430\u044f\u0442, \u0447\u0435 \u0441\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0432\u0430\u043c \u0441\u044a\u0441 \u0441\u0430\u0439\u0442\u0430 <a href=\"https:\/\/fuelo.net\">fuelo.net<\/a> \u0438 \u043d\u0430 \u043c\u0435\u043d \u0441\u0435 \u0441\u0442\u043e\u0432\u0430\u0440\u0432\u0430\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0438. \u0412 \u0442\u043e\u0437\u0438 \u043f\u043e\u0441\u0442 \u0438\u0441\u043a\u0430\u043c \u0434\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u044f \u0434\u0432\u0430 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u0438\u0442\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0438\u0442\u0435 \u043f\u0440\u0435\u0434 \u043f\u043e\u0434\u043e\u0431\u0435\u043d \u0440\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f &#8211; \u0441\u0438\u043b\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0438 \u043e\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438\u0442\u0435, \u0438 \u043a\u0430\u043a \u0441\u044a\u043c \u0433\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043b.<\/p>\n<p><strong>1. \u041d\u0430\u043c\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043d\u0430\u0439-\u0431\u043b\u0438\u0437\u043a\u0438\u0442\u0435 N \u043e\u0431\u0435\u043a\u0442\u0430 (\u0432 \u043d\u0430\u0448\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439 \u0431\u0435\u043d\u0437\u0438\u043d\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0438).<\/strong><\/p>\n<p>\u0412\u044a\u0432 fuelo \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043c\u0435 MySQL \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0435\u043d database \u0438 \u0435\u0434\u043d\u0430 \u043e\u0442 \u043f\u044a\u0440\u0432\u0438\u0442\u0435 \u043c\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0435\u0448\u0435 \u0434\u0430 upgrade-\u043d\u0435\u043c \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u044f 5.7, \u043a\u044a\u0434\u0435\u0442\u043e \u0438\u043c\u0430 \u0434\u043e\u0441\u0442\u0430 \u043f\u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u044f \u0438 \u0433\u043e\u0442\u043e\u0432\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u0441 \u0433\u0435\u043e\u043b\u043e\u043a\u0430\u0446\u0438\u044f\u0442\u0430. \u041f\u044a\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u043d\u043e \u0432\u0441\u0438\u0447\u043a\u0438 \u0437\u0430\u044f\u0432\u043a\u0438 \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043d\u0435 \u043d\u0430 \u0431\u0435\u043d\u0437\u0438\u043d\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u043d\u0430\u0431\u043b\u0438\u0437\u043e \u0431\u044f\u0445\u0430 \u043d\u0435\u0449\u043e \u043e\u0442 \u0440\u043e\u0434\u0430 \u043d\u0430 :<\/p>\n<p><code>$sql = \"SELECT *, (6371 * acos( cos( radians(\".$lat.\") ) * cos( radians(`lat`) ) * cos( radians(`lon`) - radians(\".$lon.\") ) + sin( radians(\".$lat.\") ) * sin( radians(`lat`) ) ) ) AS `distance` FROM `gasstations` HAVING `distance` &lt; \".$distance.\" ORDER BY `distance` ASC\";<\/code><\/p>\n<p><em>\u0437\u0430\u0431\u0435\u043b\u0435\u0436\u043a\u0430: \u0432\u0441\u0438\u0447\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0438 \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u043d\u0430 PHP, \u0430 \u0437\u0430\u044f\u0432\u043a\u0438\u0442\u0435 \u0441\u0430 \u043e\u043f\u0440\u043e\u0441\u0442\u0435\u043d\u0438 (\u0431\u0435\u0437 WHERE \u0438 LIMIT \u043a\u043b\u0430\u0443\u0437\u0438) \u0441 \u0446\u0435\u043b \u043f\u0440\u0435\u0433\u043b\u0435\u0434\u043d\u043e\u0441\u0442.<\/em><\/p>\n<p>\u041a\u0430\u043a\u0442\u043e \u0432\u0438\u0436\u0434\u0430\u0442\u0435 \u0442\u0443\u043a \u0434\u043e\u0440\u0438 \u043d\u0435 \u0441\u0435 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 stored procedure, \u0430 \u0446\u044f\u043b\u0430\u0442\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Haversine_formula\">haversine \u0444\u043e\u0440\u043c\u0443\u043b\u0430<\/a> \u0441\u0435 \u0438\u0437\u0447\u0438\u0441\u043b\u044f\u0432\u0430 \u043f\u0440\u0438 \u0432\u0441\u044f\u043a\u0430 \u0437\u0430\u044f\u0432\u043a\u0430. \u0422\u043e\u0432\u0430 \u043f\u0440\u0438 \u043c\u0430\u043b\u044a\u043a \u043d\u0435\u043d\u0430\u0442\u043e\u0432\u0430\u0440\u0435\u043d \u0441\u0430\u0439\u0442 \u0441 \u043d\u0435\u0433\u043e\u043b\u044f\u043c\u0430 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 (\u043d\u0430\u043f\u0440. \u0434\u043e 1000 \u043e\u0431\u0435\u043a\u0442\u0430) \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0438 \u0438 \u0441\u0435 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u0434\u043e\u0441\u0442\u0430 \u0447\u0435\u0441\u0442\u043e. \u041f\u043e\u0432\u0435\u0447\u0435\u0442\u043e tutorials \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043f\u0440\u0435\u043f\u043e\u0440\u044a\u0447\u0432\u0430\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u0437\u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u0430. \u041f\u044a\u0440\u0432\u0430\u0442\u0430 \u043c\u0438 \u0438\u0434\u0435\u044f \u0437\u0430 MySQL 5.7 \u0431\u0435\u0448\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0442\u0430\u0437\u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0441 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0430\u0442\u0430 (\u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u044f 5.7.6) \u0444\u0443\u043d\u043a\u0446\u0438\u044f <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.7\/en\/spatial-convenience-functions.html#function_st-distance-sphere\">ST_Distance_Sphere<\/a>. \u0422\u0430\u043a\u0430 \u0433\u043e\u0440\u043d\u0430\u0442\u0430 \u0437\u0430\u044f\u0432\u043a\u0430 \u0441\u0435 \u0441\u0432\u0438\u0432\u0430 \u0434\u043e:<\/p>\n<p><code>$sql = \"SELECT *, ST_Distance_Sphere(POINT(`lon`, `lat`), POINT(\".$lon.\", \".$lat.\"), 6371) AS `distance` FROM `gasstations` HAVING `distance` &lt; \".$distance.\" ORDER BY `distance` ASC\";<\/code><\/p>\n<p>\u0422\u0430\u043a\u0430 \u0438\u0437\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u0442\u0435\u043e\u0440\u0438\u044f (\u0438 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430) \u0441\u0442\u0430\u0432\u0430 \u043c\u043d\u043e\u0433\u043e \u043f\u043e-\u0431\u044a\u0440\u0437\u043e. \u0417\u0430\u0431\u0435\u043b\u0435\u0436\u0435\u0442\u0435, \u0434\u043e\u0431\u0430\u0432\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u044a\u0440 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0442\u0430 ST_Distance_Sphere, \u043a\u043e\u0439\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0432\u0430 \u0438\u0437\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u0442\u043e \u0432 km, \u0430 \u043d\u0435 \u0432 \u043c\u0435\u0442\u0440\u0438 \u043a\u0430\u043a\u0442\u043e \u0435 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435. \u0422\u043e\u0432\u0430 \u043d\u0438 \u0441\u0435 \u043d\u0430\u043b\u043e\u0436\u0438, \u0437\u0430 \u0434\u0430 \u0437\u0430\u043f\u0430\u0437\u0438\u043c \u0441\u044a\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0442\u0430 \u0441\u044a\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u0442\u0435, \u043a\u043e\u0438\u0442\u043e \u0438\u0437\u0432\u0438\u043a\u0432\u0430\u0445\u0430 \u0442\u0430\u0437\u0438 \u0437\u0430\u044f\u0432\u043a\u0430, \u0430 \u0442\u0435 \u043e\u0447\u0430\u043a\u0432\u0430\u0442 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0430 \u0432 \u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440\u0438.<br \/>\n\u041d\u0430 \u043f\u0440\u044a\u0432 \u043f\u043e\u0433\u043b\u0435\u0434 \u0432\u0441\u0438\u0447\u043a\u043e \u0438\u0437\u0433\u043b\u0435\u0436\u0434\u0430 \u0441\u0443\u043f\u0435\u0440, \u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u043d\u0435 \u0435. \u0422\u0430\u0437\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0430\u0438\u0441\u0442\u0438\u043d\u0430 \u0438\u0437\u0447\u0438\u0441\u043b\u044f\u0432\u0430 \u0432\u044a\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439-\u0431\u044a\u0440\u0437\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0435 \u0442\u043e\u0447\u043a\u0438, \u043d\u043e \u043d\u0435 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0438 \u0438 \u0437\u0430\u0442\u043e\u0432\u0430 \u0432\u0441\u0435 \u043f\u0430\u043a \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u043e\u0431\u0445\u043e\u0434\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430, \u0437\u0430 \u0434\u0430 \u043f\u043e\u0434\u0440\u0435\u0434\u0438 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438\u0442\u0435 \u043f\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u041f\u0440\u0438 \u0432\u0441\u0435 \u043f\u043e-\u0433\u043e\u043b\u044f\u043c\u0430 \u0431\u0430\u0437\u0430 (\u043f\u0440\u0438 \u043d\u0430\u0441 \u043a\u0430\u0442\u043e \u043d\u0430\u0431\u043b\u0438\u0436\u0438\u0445\u043c\u0435 50000 \u0431\u0435\u043d\u0437\u0438\u043d\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0438), \u0442\u0430\u0437\u0438 \u0437\u0430\u044f\u0432\u043a\u0430 \u0441\u044a\u0449\u043e \u0437\u0430\u043f\u043e\u0447\u043d\u0430 \u0434\u0430 \u0441\u0442\u0430\u0432\u0430 \u0431\u0430\u0432\u043d\u0430. \u0417\u0430\u043f\u043e\u0447\u043d\u0430\u0445 \u0434\u0430 \u043c\u0438\u0441\u043b\u044f \u043a\u0430\u043a \u0434\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0430 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438\u0442\u0435, \u0437\u0430 \u043a\u043e\u0438\u0442\u043e \u0441\u0435 \u0438\u0437\u0447\u0438\u0441\u043b\u044f\u0432\u0430 \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0442\u043e. \u041a\u0430\u043a\u0442\u043e \u0441\u0435 \u0432\u0438\u0436\u0434\u0430 \u043e\u0442 \u0437\u0430\u044f\u0432\u043a\u0438\u0442\u0435 (\u043f\u043e\u0447\u0442\u0438) \u0432\u0438\u043d\u0430\u0433\u0438 \u0438\u043c\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0442\u043e (HAVING `distance` &lt; \u00a0X) \u0438 \u0441\u0435 \u0437\u0430\u0447\u0443\u0434\u0438\u0445 \u043a\u0430\u043a \u043c\u043e\u0433\u0430 \u0434\u0430 \u043f\u0440\u0435\u0432\u044a\u0440\u043d\u0430 \u0442\u043e\u0432\u0430 X \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0438\u00a0\u0438 \u0442\u0430\u043a\u0430 \u0434\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0430 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438\u0442\u0435 \u043e\u0449\u0435 \u043f\u0440\u0435\u0434\u0438 \u0434\u0430 \u0437\u0430\u043f\u043e\u0447\u043d\u0435 \u0438\u0437\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u0442\u043e \u0438 \u0441\u043e\u0440\u0442\u0438\u0440\u0430\u043d\u0435\u0442\u043e. \u0422\u0430\u043a\u0430 \u043d\u0430\u043c\u0435\u0440\u0438\u0445 <a href=\"http:\/\/janmatuschek.de\/LatitudeLongitudeBoundingCoordinates\">\u0442\u0430\u0437\u0438 \u0441\u0442\u0430\u0442\u0438\u044f (Finding Points Within a Distance of a Latitude\/Longitude Using Bounding Coordinates by Jan Philip Matuschek)<\/a>, \u0432 \u043a\u043e\u044f\u0442\u043e \u043d\u0430 \u0442\u0435\u043e\u0440\u0438\u044f \u043c\u043d\u043e\u0433\u043e \u0434\u043e\u0431\u0440\u0435 \u0435 \u043e\u043f\u0438\u0441\u0430\u043d \u0442\u043e\u0447\u043d\u043e \u043c\u043e\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0418\u043c\u0430 \u0438 source \u043a\u043e\u0434 \u043d\u0430 Java, \u043a\u0430\u043a\u0442\u043e \u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0435 \u0437\u0430 \u0434\u0440\u0443\u0433\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043d\u0438 \u0435\u0437\u0438\u0446\u0438, \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u043d\u043e \u0438 <a href=\"https:\/\/github.com\/anthonymartin\/GeoLocation.php\">PHP<\/a>. \u0422\u043e\u0432\u0430 \u0431\u0435\u0448\u0435 \u0442\u043e\u0447\u043d\u043e \u043a\u0430\u043a\u0432\u043e\u0442\u043e \u043c\u0438 \u0442\u0440\u044f\u0431\u0432\u0430\u0448\u0435. \u041a\u0430\u0442\u043e \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043c \u0442\u0430\u0437\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u0434\u043e\u0431\u0438\u0432\u0430 \u0441\u043b\u0435\u0434\u043d\u0438\u044f \u0432\u0438\u0434:<\/p>\n<p><code>$edison = Geolocation::fromDegrees($lat, $lon);<br \/>\n$coordinates = $edison-&gt;boundingCoordinates($distance, 'km');<br \/>\n$lat_min = $coordinates[0]-&gt;getLatitudeInDegrees();<br \/>\n$lon_min = $coordinates[0]-&gt;getLongitudeInDegrees();<br \/>\n$lat_max = $coordinates[1]-&gt;getLatitudeInDegrees();<br \/>\n$lon_max = $coordinates[1]-&gt;getLongitudeInDegrees();<\/code><\/p>\n<p><code>$sql = \"SELECT *, ST_Distance_Sphere(POINT(`lon`, `lat`), POINT(\".$lon.\", \".$lat.\"), 6371) AS `distance` FROM `gasstations` WHERE `lat` &gt; '\".$lat_min.\"' AND `lat` &lt; '\".$lat_max.\"' AND `lon` &gt; '\".$lon_min.\"' AND `lon` &lt; '\".$lon_max.\"' HAVING `distance` &lt; \".$distance.\" ORDER BY `distance` ASC\";<\/code><\/p>\n<p>\u0422\u0430\u043a\u0430 \u0432\u0435\u0447\u0435 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0431\u0435\u0448\u0435 \u0434\u043e\u0441\u0442\u0430 \u043f\u043e-\u0431\u044a\u0440\u0437\u0430, \u043e\u0431\u0445\u043e\u0436\u0434\u0430\u0448\u0435 \u0434\u043e\u0441\u0442\u0430 \u043f\u043e-\u043c\u0430\u043b\u043a\u043e \u0440\u0435\u0434\u043e\u0432\u0435, \u043a\u043e\u0435\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u0430 \u043d\u0430 MySQL \u0438 \u0441\u044a\u0440\u0432\u044a\u0440\u0430 \u043a\u0430\u0442\u043e \u0446\u044f\u043b\u043e. \u0410\u0437 \u043e\u0431\u0430\u0447\u0435 \u043d\u0435 \u0441\u0435 \u0441\u043f\u0440\u044f\u0445 \u0434\u043e \u0442\u0443\u043a. \u0425\u0440\u0443\u043c\u043d\u0430 \u043c\u0438 \u043a\u0430\u043a \u0434\u0430 \u0441\u0435 \u0432\u044a\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043c \u043e\u0442 spatial \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043d\u0430 MySQL. \u041f\u044a\u0440\u0432\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0445 \u043d\u043e\u0432\u043e \u043f\u043e\u043b\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430 gasstations \u0441 \u0438\u043c\u0435 coords \u0438 \u0442\u0438\u043f <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.7\/en\/gis-class-point.html\">POINT<\/a>. \u041f\u043e\u043f\u044a\u043b\u043d\u0438\u0445 \u043d\u043e\u0432\u043e\u0442\u043e \u043f\u043e\u043b\u0435 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0442\u0435 \u0434\u0432\u0435 \u043f\u043e\u043b\u0435\u0442\u0430, \u043a\u043e\u0438\u0442\u043e \u0432\u0435\u0447\u0435 \u0438\u043c\u0430\u0445, lat \u0438 lon , \u0447\u0440\u0435\u0437 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 <code>UPDATE `gasstations` SET coords = Point(lon, lat);<\/code> \u0438 \u0441\u043b\u0435\u0434 \u0442\u043e\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0445 \u043f\u043e\u043b\u0435\u0442\u043e <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.7\/en\/creating-spatial-indexes.html\">spatial index<\/a>. \u0421\u043b\u0435\u0434 \u0442\u0430\u0437\u0438 \u043f\u0440\u043e\u043c\u044f\u043d\u0430 \u0431\u044f\u0445 \u0433\u043e\u0442\u043e\u0432 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0430\u0442\u0430 \u043c\u0438 (\u0437\u0430 \u0441\u0435\u0433\u0430) SQL \u0437\u0430\u044f\u0432\u043a\u0430 \u0437\u0430 \u043d\u0430\u043c\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043d\u0430\u0439-\u0431\u043b\u0438\u0437\u043a\u0438\u0442\u0435 \u0431\u0435\u043d\u0437\u0438\u043d\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0438:<\/p>\n<p><code>$edison = Geolocation::fromDegrees($lat, $lon);<br \/>\n$coordinates = $edison-&gt;boundingCoordinates($distance, 'km');<br \/>\n$lat_min = $coordinates[0]-&gt;getLatitudeInDegrees();<br \/>\n$lon_min = $coordinates[0]-&gt;getLongitudeInDegrees();<br \/>\n$lat_max = $coordinates[1]-&gt;getLatitudeInDegrees();<br \/>\n$lon_max = $coordinates[1]-&gt;getLongitudeInDegrees();<\/code><\/p>\n<p><code>$sql = \"SELECT *, ST_Distance_Sphere(`coords`, POINT(\".$lon.\", \".$lat.\"), 6371) AS `distance` FROM `gasstations` WHERE ST_Within(`coords`, ST_MakeEnvelope(Point(\".$lon_min.\", \".$lat_min.\"), Point(\".$lon_max.\", \".$lat_max.\"))) HAVING `distance` &lt; \".$distance.\" ORDER BY `distance` ASC;<\/code><\/p>\n<p>\u0421\u044a\u0449\u043d\u043e\u0441\u0442\u0442\u0430 \u0442\u0443\u043a \u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0442\u0430 ST_Within(), \u043a\u043e\u044f\u0442\u043e \u0441\u0435 \u0432\u044a\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u043e\u0442 spatial index-\u0430 \u043d\u0430 coords \u0438 \u0444\u0438\u043b\u0442\u0440\u0438\u0440\u0430 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438\u0442\u0435 \u043e\u0449\u0435 \u043f\u043e-\u0431\u044a\u0440\u0437\u043e. \u0424\u0443\u043d\u043a\u0446\u0438\u044f\u0442\u0430 ST_MakeEnvelope \u0441\u044a\u0437\u0434\u0430\u0432\u0430 &#8220;\u043a\u0432\u0430\u0434\u0440\u0430\u0442&#8221;, \u043f\u043e \u0434\u0432\u0435 \u043a\u0440\u0430\u0439\u043d\u0438 \u0442\u043e\u0447\u043a\u0438, \u0432 \u043a\u043e\u0439\u0442\u043e \u0441\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0430\u0432\u0430 \u0442\u044a\u0440\u0441\u0435\u043d\u0435\u0442\u043e.<\/p>\n<p>\u0417\u0430 \u0441\u0435\u0433\u0430 \u0442\u043e\u0432\u0430 \u043c\u0438 \u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u0442\u043e \u0437\u0430 \u043d\u0430\u043c\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043d\u0430\u0439-\u0431\u043b\u0438\u0437\u043a\u0438\u0442\u0435 \u0431\u0435\u043d\u0437\u0438\u043d\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0438. \u041d\u0435 \u043c\u043e\u0433\u0430 \u0434\u0430 \u0434\u0430\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u043d\u0438 \u0441\u0442\u043e\u0439\u043d\u043e\u0441\u0442\u0438, \u0437\u0430\u0449\u043e\u0442\u043e \u043c\u0435\u0436\u0434\u0443\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0442\u0430 \u043c\u043d\u043e\u0433\u043e \u0441\u0435 \u043f\u0440\u043e\u043c\u0435\u043d\u044f\u0445\u0430, \u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u043d\u0435\u0449\u0430\u0442\u0430 \u0432\u044a\u0440\u0432\u044f\u0442 \u043c\u043d\u043e\u0433\u043e \u043f\u043e-\u0434\u043e\u0431\u0440\u0435. \u0411\u0430\u0432\u043d\u0438\u0442\u0435 \u0437\u0430\u044f\u0432\u043a\u0438 \u043d\u0430\u043c\u0430\u043b\u044f\u0445\u0430 \u0438 \u043d\u0430\u0442\u043e\u0432\u0430\u0440\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0441\u044a\u0440\u0432\u044a\u0440\u0430 \u0441\u043f\u0430\u0434\u043d\u0430.<\/p>\n<p><strong>2. \u0418\u0437\u043e\u0431\u0440\u0430\u0437\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0433\u043e\u043b\u044f\u043c \u0431\u0440\u043e\u0439 \u043e\u0431\u0435\u043a\u0442\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0430<\/strong><\/p>\n<p>\u0412\u044a\u0432 fuelo \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043c\u0435 Google Maps \u0437\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0431\u0435\u043d\u0437\u0438\u043d\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0438\u0442\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0430. \u0412 \u043d\u0430\u0447\u0430\u043b\u043e\u0442\u043e \u0431\u0435\u0448\u0435 \u043b\u0435\u0441\u043d\u043e &#8211; \u043c\u0430\u043b\u043a\u043e \u043e\u0431\u0435\u043a\u0442\u0438 &#8211; \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u0432\u0441\u0438\u0447\u043a\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0430\u0442\u0430. \u0421\u043b\u0435\u0434 \u0432\u0440\u0435\u043c\u0435, \u043a\u0430\u043a\u0442\u043e \u0432\u0441\u0438\u0447\u043a\u0438, \u0437\u0430\u043f\u043e\u0447\u043d\u0430\u0445\u043c\u0435 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043c\u0435 <a href=\"https:\/\/github.com\/googlemaps\/js-marker-clusterer\"> js marker clusterer<\/a>. \u0422\u0430\u043a\u0430 \u043e\u0431\u0430\u0447\u0435 \u043f\u0440\u0435\u0445\u0432\u044a\u0440\u043b\u044f\u043c\u0435 \u0442\u0435\u0436\u043a\u0438\u0442\u0435 \u0438\u0437\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u044a\u0440\u0445\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438 \u043a\u043e\u0433\u0430\u0442\u043e \u0442\u043e\u0439 \u0440\u0435\u0448\u0438 \u0434\u0430 unzoom-\u043d\u0435 \u0437\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u0431\u0435\u043d\u0437\u0438\u043d\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0432 \u0415\u0432\u0440\u043e\u043f\u0430, \u043c\u043e\u0436\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043e \u0434\u0430 \u043c\u0443 \u0437\u0430\u0431\u0438\u0435 browser-\u0430 \u0438\/\u0438\u043b\u0438 \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440\u0430. \u0417\u0430\u043f\u043e\u0447\u043d\u0430\u0445 \u0434\u0430 \u0442\u044a\u0440\u0441\u044f \u0441\u044a\u0440\u0432\u044a\u0440\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430 clustering \u043d\u0430 \u043e\u0431\u0435\u043a\u0442\u0438. \u0420\u0435\u0448\u0435\u043d\u0438\u0435\u0442\u043e, \u043a\u043e\u0435\u0442\u043e \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043c\u0435 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u0441\u0435 \u043d\u0430\u0440\u0438\u0447\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Geohash\">geohash<\/a>. MySQL \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430 <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.7\/en\/spatial-geohash-functions.html\">geohash \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/a> \u0438 \u0441 \u0442\u044f\u0445\u043d\u0430 \u043f\u043e\u043c\u043e\u0449 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 server-side clustering \u0441\u0442\u0430\u0432\u0430 \u043d\u0435\u0449\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e:<\/p>\n<p><code>$sql = \"SELECT `id`, `brand_id`, AVG(lat) as avglat, AVG(lon) as avglon, substring(`geohash`, 1, \".$precise.\") as cluster_hash, count(*) as cluster_count<br \/>\nFROM `gasstations`<br \/>\nWHERE ST_Within(`coords`, ST_MakeEnvelope(Point('.$lon_min.', '.$lat_min.'), Point('.$lon_max.', '.$lat_max.')))<br \/>\nGROUP BY `cluster_hash`\";<\/code><\/p>\n<p>\u0417\u0430 \u0446\u0435\u043b\u0442\u0430 \u0412\u0438 \u0442\u0440\u044f\u0431\u0432\u0430\u0442 \u043d\u044f\u043a\u043e\u043b\u043a\u043e \u043d\u0435\u0449\u0430:<\/p>\n<ul>\n<li>\u043f\u043e\u043b\u0435 geohash (\u043f\u0440\u0438 \u043c\u0435\u043d VARCHAR(9) ) \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430 gasstations, \u043a\u043e\u0435\u0442\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u0435 \u043f\u043e\u043f\u044a\u043b\u043d\u0435\u043d\u043e \u0441\u044a\u0441 ST_GeoHash() \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0442\u0430 (\u0438 \u043d\u0435 \u0437\u0430\u0431\u0440\u0430\u0432\u044f\u0439\u0442\u0435 \u0434\u0430 \u0433\u043e update-\u0432\u0430\u0442\u0435 \u0432\u0438\u043d\u0430\u0433\u0438, \u043a\u043e\u0433\u0430\u0442\u043e \u043f\u0440\u043e\u043c\u0435\u043d\u0438\u0442\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0438\u0442\u0435 \u043d\u0430 \u043e\u0431\u0435\u043a\u0442\u0430 ! )<\/li>\n<li>$lon_min, $lat_min, $lon_max \u0438 $lat_max , \u043a\u043e\u0438\u0442\u043e \u043b\u0435\u0441\u043d\u043e \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0437\u0435\u043c\u0435\u0442\u0435 \u0437\u0430 \u0432\u0438\u0434\u0438\u043c\u0430\u0442\u0430 \u0447\u0430\u0441\u0442 \u043d\u0430 \u043a\u0430\u0440\u0442\u0430\u0442\u0430 \u043e\u0442 google maps API-\u0442\u043e<\/li>\n<li>$precise &#8211; \u043a\u043e\u043b\u043a\u043e \u043f\u0440\u0435\u0446\u0438\u0437\u043d\u043e \u0434\u0430 \u0435 \u043a\u043b\u044a\u0441\u0442\u0435\u0440\u0438\u0440\u0430\u043d\u0435\u0442\u043e. \u041e\u0441\u043d\u043e\u0432\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438 \u043e\u0442 zoom level-\u0430 \u043d\u0430 \u043a\u0430\u0440\u0442\u0430\u0442\u0430 \u0438 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0438 \u0433\u043e \u043d\u0430\u0433\u043b\u0430\u0441\u0438\u0442\u0435 \u0441\u043f\u043e\u0440\u0435\u0434 \u0432\u0430\u0448\u0438\u0442\u0435 \u043d\u0443\u0436\u0434\u0438<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438 \u0438\u0437\u043f\u044a\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0432\u0430\u0442\u0435 \u0432\u0441\u0438\u0447\u043a\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0430\u0442\u0430 \u0438 \u043d\u0435 \u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 client-side clustering:<\/p>\n<ul>\n<li>cluster_count \u0435 \u0431\u0440\u043e\u044f \u043e\u0431\u0435\u043a\u0442\u0438 \u0432 \u043a\u043b\u044a\u0441\u0442\u0435\u0440\u0430 &#8211; \u0430\u043a\u043e \u0435 1, \u0437\u043d\u0430\u0447\u0438 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u0431\u0435\u043d\u0437\u0438\u043d\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u0438 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043f\u043e\u043a\u0430\u0436\u0435\u0442\u0435 \u043f\u0438\u043d\u0447\u0435 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442 \u043e\u0442 \u043d\u0435\u0439\u043d\u0430\u0442\u0430 brand_id. \u0410\u043a\u043e \u0435 \u043f\u043e\u0432\u0435\u0447\u0435 \u043e\u0442 1 \u0437\u043d\u0430\u0447\u0438 \u0438\u043c\u0430 \u043f\u043e\u0432\u0435\u0447\u0435 \u043e\u0442 \u0435\u0434\u043d\u0430 \u0431\u0435\u043d\u0437\u0438\u043d\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u0432 \u0440\u0430\u0439\u043e\u043d\u0430 \u0438 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u0442\u0435 \u043a\u043b\u044a\u0441\u0442\u0435\u0440\u043d\u0430 \u0438\u043a\u043e\u043d\u043a\u0430 \u0441 \u0446\u0438\u0444\u0440\u0438\u0447\u043a\u0430 cluster_count, \u043a\u043e\u044f\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0432\u0430 \u0431\u0440\u043e\u044f.<\/li>\n<li>avglat \u0438 avglon \u0441\u0430 \u0441\u0440\u0435\u0434\u043d\u043e\u0430\u0440\u0438\u0442\u043c\u0435\u0442\u0438\u0447\u043d\u043e \u043e\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0438\u0442\u0435 \u043d\u0430 \u0431\u0435\u043d\u0437\u0438\u043d\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0438\u0442\u0435 \u0438 \u0442\u0430\u043a\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0430\u0442\u0435 \u043a\u043b\u044a\u0441\u0442\u0435\u0440\u043d\u0430\u0442\u0430 \u0438\u043a\u043e\u043d\u043a\u0430 \u043d\u0430 &#8220;\u043f\u043e-\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u043e&#8221; \u043c\u044f\u0441\u0442\u043e. \u0418\u043d\u0430\u0447\u0435, \u043e\u0442 \u0441\u0430\u043c\u0430\u0442\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430 \u043d\u0430 geohash \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u044a\u043c\u0430, \u0417\u0435\u043c\u044f\u0442\u0430 \u0441\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044f \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u044a\u0433\u044a\u043b\u043d\u0438\u0446\u0438 \u0438 \u043a\u043b\u044a\u0441\u0442\u0435\u0440\u0438\u0442\u0435 \u0412\u0438 \u0449\u0435 \u0441\u0435 \u043d\u0430\u0440\u0435\u0434\u044f\u0442 \u043a\u0430\u0442\u043e \u0432 \u0440\u0435\u0448\u0435\u0442\u043a\u0430. \u0420\u0430\u0437\u0431\u0438\u0440\u0430 \u0441\u0435 \u0430\u043a\u043e cluster_count e 1, avglat \u0438 avglon \u0441\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0438\u0442\u0435 \u043d\u0430 \u0441\u0430\u043c\u0430\u0442\u0430 \u0431\u0435\u043d\u0437\u0438\u043d\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u044f.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>\u0422\u043e\u0432\u0430 \u0441\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0442\u0430 \u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u0442\u0430 \u0434\u043e \u043a\u043e\u0438\u0442\u043e \u0441\u0442\u0438\u0433\u043d\u0430\u0445 \u0437\u0430 \u0442\u0435\u0437\u0438 \u0434\u0432\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0438 \u0449\u0435 \u0441\u0435 \u0440\u0430\u0434\u0432\u0430\u043c, \u0430\u043a\u043e \u0441\u044a\u043c \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u043d\u0430 \u043d\u044f\u043a\u043e\u0439.<\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-official sd-sharing\"><h3 class=\"sd-title\">\u0421\u043f\u043e\u0434\u0435\u043b\u0435\u0442\u0435 \u0442\u043e\u0432\u0430:<\/h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><div class=\"fb-share-button\" data-href=\"https:\/\/iko.drundrun.org\/blog\/?p=3751\" data-layout=\"button_count\"><\/div><\/li><li class=\"share-twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"https:\/\/iko.drundrun.org\/blog\/?p=3751\" data-text=\"\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 MySQL \u0437\u0430\u044f\u0432\u043a\u0438 \u043f\u0440\u0438 \u0433\u0435\u043e\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\"  >Tweet<\/a><\/li><li class=\"share-pocket\"><div class=\"pocket_button\"><a href=\"https:\/\/getpocket.com\/save\" class=\"pocket-btn\" data-lang=\"en\" data-save-url=\"https:\/\/iko.drundrun.org\/blog\/?p=3751\" data-pocket-count=\"horizontal\" >Pocket<\/a><\/div><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>\u041d\u0430\u0432\u044f\u0440\u043d\u043e \u043f\u043e\u0432\u0435\u0447\u0435\u0442\u043e \u043e\u0442 \u0432\u0430\u0441 \u0437\u043d\u0430\u044f\u0442, \u0447\u0435 \u0441\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0432\u0430\u043c \u0441\u044a\u0441 \u0441\u0430\u0439\u0442\u0430 fuelo.net \u0438 \u043d\u0430 \u043c\u0435\u043d \u0441\u0435 \u0441\u0442\u043e\u0432\u0430\u0440\u0432\u0430\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0438. \u0412 \u0442\u043e\u0437\u0438 \u043f\u043e\u0441\u0442 \u0438\u0441\u043a\u0430\u043c \u0434\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u044f \u0434\u0432\u0430 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u0438\u0442\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0438\u0442\u0435 \u043f\u0440\u0435\u0434 \u043f\u043e\u0434\u043e\u0431\u0435\u043d \u0440\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f &#8211; \u0441\u0438\u043b\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0438 \u043e\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438\u0442\u0435, \u0438 \u043a\u0430\u043a \u0441\u044a\u043c \u0433\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043b. 1. \u041d\u0430\u043c\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043d\u0430\u0439-\u0431\u043b\u0438\u0437\u043a\u0438\u0442\u0435 N \u043e\u0431\u0435\u043a\u0442\u0430 (\u0432 \u043d\u0430\u0448\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439 \u0431\u0435\u043d\u0437\u0438\u043d\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0438). &hellip; <a href=\"https:\/\/iko.drundrun.org\/blog\/?p=3751\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 MySQL \u0437\u0430\u044f\u0432\u043a\u0438 \u043f\u0440\u0438 \u0433\u0435\u043e\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-official sd-sharing\"><h3 class=\"sd-title\">\u0421\u043f\u043e\u0434\u0435\u043b\u0435\u0442\u0435 \u0442\u043e\u0432\u0430:<\/h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><div class=\"fb-share-button\" data-href=\"https:\/\/iko.drundrun.org\/blog\/?p=3751\" data-layout=\"button_count\"><\/div><\/li><li class=\"share-twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"https:\/\/iko.drundrun.org\/blog\/?p=3751\" data-text=\"\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 MySQL \u0437\u0430\u044f\u0432\u043a\u0438 \u043f\u0440\u0438 \u0433\u0435\u043e\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\"  >Tweet<\/a><\/li><li class=\"share-pocket\"><div class=\"pocket_button\"><a href=\"https:\/\/getpocket.com\/save\" class=\"pocket-btn\" data-lang=\"en\" data-save-url=\"https:\/\/iko.drundrun.org\/blog\/?p=3751\" data-pocket-count=\"horizontal\" >Pocket<\/a><\/div><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div>","protected":false},"author":1,"featured_media":3773,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[6,16],"tags":[1202,1122,1203,1206,1201,1204,1205],"jetpack_featured_media_url":"https:\/\/iko.drundrun.org\/blog\/wp-content\/uploads\/2016\/09\/50000.jpg","jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/p2r9Xz-Yv","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/iko.drundrun.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3751"}],"collection":[{"href":"https:\/\/iko.drundrun.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iko.drundrun.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iko.drundrun.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iko.drundrun.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3751"}],"version-history":[{"count":9,"href":"https:\/\/iko.drundrun.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3751\/revisions"}],"predecessor-version":[{"id":3774,"href":"https:\/\/iko.drundrun.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3751\/revisions\/3774"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/iko.drundrun.org\/blog\/index.php?rest_route=\/wp\/v2\/media\/3773"}],"wp:attachment":[{"href":"https:\/\/iko.drundrun.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3751"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iko.drundrun.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3751"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iko.drundrun.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3751"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}