起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1640|回复: 2

[结贴] 求指导,用wex5做一个和地理位置有关的web,查询数据库时....

[复制链接]

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
发表于 2016-11-1 11:08:40 | 显示全部楼层 |阅读模式
求指导,用wex5做一个和地理位置有关的web,查询数据库时如何优化?
数据共100万条,使用between和不使用between与使用spatial和不使用spatial的结果好像刚好相反,本人新手,求问究竟是如何使用好呢?

不带索引如下:
SELECT name, AsText(location) FROM Points WHERE X(location) < 103.252243 and X(location)>10.055963 and Y(location) > 23.275588 and Y(location) < 123.455768;
/* Affected rows: 0  已找到记录: 96,572  警告: 0  持续时间 1 query: 0.000 sec. (+ 0.922 sec. network) */
SELECT name, AsText(location) FROM Points WHERE X(location) between 10.055963 and  103.252243 and Y(location) between 23.275588 and  123.455768;
/* Affected rows: 0  已找到记录: 96,572  警告: 0  持续时间 1 query: 0.016 sec. (+ 1.406 sec. network) */

增加spatial索引:
ALTER TABLE `points`
        ADD SPATIAL INDEX `location` (`location`);
SELECT `DEFAULT_COLLATION_NAME` FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME`='12';
SHOW TABLE STATUS FROM `12`;
SHOW FUNCTION STATUS WHERE `Db`='12';
SHOW PROCEDURE STATUS WHERE `Db`='12';
SHOW TRIGGERS FROM `12`;
SELECT *, EVENT_SCHEMA AS `Db`, EVENT_NAME AS `Name` FROM information_schema.`EVENTS` WHERE `EVENT_SCHEMA`='12';
SHOW CREATE TABLE `12`.`points`;
/* 进入会话 "X5" */
SHOW CREATE TABLE `12`.`points`;

查询结果如下:
SELECT name, AsText(location) FROM Points WHERE X(location) < 103.252243 and X(location)>10.055963 and Y(location) > 23.275588 and Y(location) < 123.455768;
/* Affected rows: 0  已找到记录: 96,572  警告: 0  持续时间 1 query: 0.015 sec. (+ 1.032 sec. network) */
SELECT name, AsText(location) FROM Points WHERE X(location) between 10.055963 and  103.252243 and Y(location) between 23.275588 and  123.455768;
/* Affected rows: 0  已找到记录: 96,572  警告: 0  持续时间 1 query: 0.000 sec. (+ 1.218 sec. network) */

1

主题

1831

帖子

821

积分

高级会员

Rank: 4

积分
821
QQ
发表于 2016-11-1 13:54:08 | 显示全部楼层
建议上网查询一下SQL语句优化
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2016-11-1 15:39:58 | 显示全部楼层
大雁子 发表于 2016-11-1 13:54
建议上网查询一下SQL语句优化

谢谢!
参考了2篇文章:
http://www.111cn.net/database/mysql/45273.htm
http://blog.csdn.net/yaofuyuan/article/details/6080836
感觉了<>性能更优一些,选择了<>代替了between and,但是又放弃了spatial空间索引,本身就是地理位置有关的,担心以后是硬伤啊!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-21 07:02 , Processed in 0.056525 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表