簡體   English   中英

如何加快查詢速度?

[英]How can i speed up query?

我創建了一個表:

    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%'

因此,使用此請求,我可以獲得該大圖塊中的所有標記。

請嘗試以下操作:

ALTER TABLE  `markersstorage2` ADD INDEX (`id_tile` ) ;

您需要在id_tile字段上添加索引。

ALTER TABLE `markersstorage2`  ADD INDEX `id_tile` (`id_tile`);

您可以檢查查詢是否使用索引,例如:

解釋SELECT ID,LAT,LNG從markersStorage2在哪里id_tile喜歡'3%'

沒有索引

“ id”;“ select_type”;“ table”;“ type”;“ possible_keys”;“ key”;“ key_len”;“ ref”;“ rows”;“ Extra”“ 1”;“ SIMPLE”;“ markersStorage2” ;“ ALL”; NULL; NULL; NULL; NULL;“ 7”;“在哪里使用”

帶索引

“ id”;“ select_type”;“ table”;“ type”;“ possible_keys”;“ key”;“ key_len”;“ ref”;“ rows”;“ Extra”“ 1”;“ SIMPLE”;“ markersStorage2” ;“范圍”;“ id_tile”;“ id_tile”;“ 47”; NULL;“ 3”;“在哪里使用”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM