我创建了一个表:
CREATE TABLE IF NOT EXISTS `markersStorage2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`surname` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`id_vk` int(10) NOT NULL,
`activity_link` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
`message` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
`lat` float(10,6) NOT NULL,
`lng` float(10,6) NOT NULL,
`type` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`id_tile` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
我用它来按图块存储谷歌地图标记。
此表经常更新,我的意思是向其中添加了新标记
我经常使用这个查询:
SELECT id, lat,lng FROM markersStorage2 WHERE id_tile LIKE '$tileNumber%'
我怎样才能加快这个查询?也许我需要创建另一个表或重新组织这个表?
瓷砖的编号如下:
http://msdn.microsoft.com/en-us/library/bb259689.aspx
示例:我使用的是最大缩放 15,因此当我向数据库添加新标记时,服务器
确定该标记将位于哪个图块中,例如我们将像这样得到
id_tile = 002013111032032
所有标记的 id_tile 都包含 15 个数字。
稍后,当用户通过 ajax 请求查看地图图块时,但这些图块可以
处于不同的缩放级别,例如我们将收到此请求:
SELECT id, lat,lng FROM markersStorage2 WHERE id_tile LIKE '002013111032%'
所以使用这个请求我可以得到这个大图块中的所有标记。