kni*_*ing 0 mysql database-design google-maps
我创建了一个表:
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
Run Code Online (Sandbox Code Playgroud)
我用它来存储谷歌的谷歌地图标记.
这个表经常更新,我的意思是新的标记被添加到其中
我经常使用这个查询:
SELECT id, lat,lng FROM markersStorage2 WHERE id_tile LIKE '$tileNumber%'
Run Code Online (Sandbox Code Playgroud)
我怎样才能加快这个查询?也许我需要创建另一个表或重新组织这个?
瓷砖的编号如下:
http://msdn.microsoft.com/en-us/library/bb259689.aspx
示例:我正在使用最大缩放15,因此当我向服务器的DB添加新标记时
确定这个标记将位于哪个区块中,例如我们将得到这样的smth
id_tile = 002013111032032
Run Code Online (Sandbox Code Playgroud)
所有标记都有id_tile,15个数字不少于此.
稍后当用户通过ajax请求查看地图图块时,可以使用此图块
处于不同的缩放级别,例如我们将收到此请求:
SELECT id, lat,lng FROM markersStorage2 WHERE id_tile LIKE '002013111032%'
Run Code Online (Sandbox Code Playgroud)
因此,使用此请求,我可以获得此大块中的所有标记.
小智 5
请尝试以下方法:
ALTER TABLE `markersstorage2` ADD INDEX (`id_tile` ) ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |