社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

The Impaler

The Impaler 最近创建的主题
The Impaler 最近回复了
4 年前
回复了 The Impaler 创建的主题 » 从匹配行中选择最高ID的高性能MySQL查询

您可以做一些更改来提高查询的性能。我要尝试的第一个方法是移除 OR 运算符并添加索引。

卸下OR运算符

使用 UNION .例如:

select * from (
  select *
  from mytable 
  where thing = 'foo' and used is null and stime = 0 and ~flags & 1
  order by id desc
  limit 1
) z
union all
select * from (
  select *
  from mytable
  where thing = 'bar' and used is null and stime = 0 and ~flags & 1
  order by id desc
  limit 1
) y 
order by id desc
limit 1;

以下索引可以帮助优化器:

create index ix1 on mytable (thing, stime, used, flags, id);

还有进一步的优化可以应用,但你可以开始尝试这个。

6 年前
回复了 The Impaler 创建的主题 » 如何使用MySQL使用经度和纬度列查找行之间的距离?

首先,我将Haversine函数实现为MySQL函数,如:

create function haversine_distance (
  float long1, 
  float lat1,
  float long2,
  float lat2)
returns float deterministic
return ... -- formula here

一旦有了它,查询就变得非常简单。例如经度 10.21 /纬度 -50.45 ,查询将如下所示:

select *
from my_table
order by haversine_distance(long, lat, 10.21, -50.45) asc
6 年前
回复了 The Impaler 创建的主题 » 插入mysql 2记录,第二条记录引用记录1中新创建的id?

不,不能在 单一的 查询。

MySQL没有实现 标准 此查询所需的“可延迟约束”的SQL功能( INSERT )为了成功。不过,在postgresql或oracle中也可以找到解决方案。

这在mysql中是不可能实现的,因为在插入第二行的过程中,它的外键约束将失败,因为第一行还没有“正式”存在——尽管已经插入。但是,如果FK约束检查推迟到SQL语句结束(或事务结束),查询将成功完成…但这并没有在mysql中实现。

6 年前
回复了 The Impaler 创建的主题 » mysql脏读与sql标准中定义的脏读

mysql的定义是 例1 脏读:当行已经存在(但由T1更新)而T2读取它时的情况。然后,如果T1回滚,T2可能对它执行了错误的计算。丑陋的

sql定义涵盖了更多的情况。例如当行 正在被 第一次由T1创建(但尚未提交),然后由T2读取。在这种情况下,如果事务T1回滚,就好像该行从未存在过…但是t2已经在使用它了,谁知道它的用途是什么。丑陋的

总之,这两种情况都是丑陋的,可能导致不一致。sql定义比mysql更全面。