当前在线人数7537
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 - 同主题阅读文章

此篇文章共收到打赏
0

  • 10
  • 20
  • 50
  • 100
您目前伪币余额:0
未名交友
[更多]
[更多]
这个世界很多事难以想象
[版面:葵花宝典][首篇作者:TeacherWei] , 2020年10月10日23:29:18 ,2475次阅读,39次回复
来APP回复,赚取更多伪币 关注本站公众号:
[首页] [上页][下页][末页] [分页:1 2 ]
TeacherWei
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: TeacherWei (TW), 信区: Programming
标  题: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sat Oct 10 23:29:18 2020, 美东)

比如SQLITE。

CREATE TABLE sometable(Id INTEGER PRIMARY KEY)

简单吧?就是一个整数数组。而且是PRIMARY KEY

现在:
SELECT MAX(ID) from sometable

50万数竟然将近一分钟!不就是二叉树么?竟然是O(n),而不是O(Log(n))

上网查是没结果的!只能试

CREATE TABLE sometable(Id INTEGER PRIMARY KEY NOT NULL)

这次只要5秒钟了!

问题是,PRIMARY KEY就隐含NOT NULL啊!所有教科书都是这么讲!

这个是不是SQLITE特有问题?我不知道!

但是

SELECT MAX(ID),MIN(ID)  from sometable

不能被优化,是所有数据库的通病!你不能想象优化这个有多难!结果是分开运行10秒
钟,放到一个query 2分钟!


--
※ 修改:·TeacherWei 於 Oct 10 23:33:06 2020 修改本文·[FROM: 74.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
chebyshev
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: chebyshev (......), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 01:38:16 2020, 美东)

In SQL standard, the primary key column must not contain NULL values. It
means that the primary key column has an implicit NOT NULL constraint.
However, to make the current version of SQLite compatible with the earlier
version, SQLite allows the primary key column to contain NULL values.

----https://www.sqlitetutorial.net/sqlite-primary-key/

我刚刚查到的,不知真假。
【 在 TeacherWei (TW) 的大作中提到: 】
: 比如SQLITE。
: CREATE TABLE sometable(Id INTEGER PRIMARY KEY)
: 简单吧?就是一个整数数组。而且是PRIMARY KEY
: 现在:
: SELECT MAX(ID) from sometable
: 50万数竟然将近一分钟!不就是二叉树么?竟然是O(n),而不是O(Log(n))
: 上网查是没结果的!只能试
: CREATE TABLE sometable(Id INTEGER PRIMARY KEY NOT NULL)
: 这次只要5秒钟了!
: 问题是,PRIMARY KEY就隐含NOT NULL啊!所有教科书都是这么讲!
: ...................




--
※ 修改:·chebyshev 於 Oct 11 01:38:47 2020 修改本文·[FROM: 72.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

 
TeacherWei
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: TeacherWei (TW), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 08:03:54 2020, 美东)

那个其实也不是重点。

重点是primary key,不管有没有null, 都是带 unique index的。

因此优化的代码是一样的。而且你搜一下,这样做的很多,大家都建议单独选min或者
max。而且都是简单的 Primary key 。其中很多 Sqlite 用户。

都是睁眼说瞎话。


【 在 chebyshev(......) 的大作中提到: 】
<br>: In SQL standard, the primary key column must not contain NULL values.
It
<br>: means that the primary key column has an implicit NOT NULL constraint.
<br>: However, to make the current version of SQLite compatible with the
earlier
<br>: version, SQLite allows the primary key column to contain NULL values.
<br>: ----https://www.sqlitetutorial.net/sqlite-primary-key/
<br>: 我刚刚查到的,不知真假。
<br>
--
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
muse
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: muse (老心理学家), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 14:19:23 2020, 美东)

人笨怪刀钝,如果primary key允许null, 还怎么保证unique。你还是先去搞懂b-tree,
再来喷。
【 在 TeacherWei (TW) 的大作中提到: 】
: 那个其实也不是重点。
: 重点是primary key,不管有没有null, 都是带 unique index的。
: 因此优化的代码是一样的。而且你搜一下,这样做的很多,大家都建议单独选min或者
: max。而且都是简单的 Primary key 。其中很多 Sqlite 用户。
: 都是睁眼说瞎话。
: <br>: In SQL standard, the primary key column must not contain NULL values
.
: It
: <br>: means that the primary key column has an implicit NOT NULL
constraint.
: <br>: However, to make the current version of SQLite compatible with the
: earlier
: ...................



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 68.]

 
TeacherWei
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: TeacherWei (TW), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 14:28:55 2020, 美东)

这事儿你应该去问sqlite。怎么来问我?

难道你天生就知道Sqlite咋实现的?真是不世出的天才!


【 在 muse(老心理学家) 的大作中提到: 】
<br>: 人笨怪刀钝,如果primary key允许null, 还怎么保证unique。你还是先去搞懂b
-tree,
<br>:  再来喷。
<br>: .
<br>: constraint.
<br>
--
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
muse
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 6 ]

发信人: muse (老心理学家), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 14:46:20 2020, 美东)

您才是不世出的大牛,您的iot理论是颠覆性的。我不过是知道一些数据库索引的皮毛
而已。

不过,我有点奇怪,您这种惜时如金的大牛,怎么会有时间,每天花这么多时间在这里
和我们这些凡夫俗子灌水呢?

【 在 TeacherWei (TW) 的大作中提到: 】
: 这事儿你应该去问sqlite。怎么来问我?
: 难道你天生就知道Sqlite咋实现的?真是不世出的天才!
: <br>: 人笨怪刀钝,如果primary key允许null, 还怎么保证unique。你还是先去搞
懂b
: -tree,
: <br>:  再来喷。
: <br>: .
: <br>: constraint.
: <br>



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 68.]

 
TeacherWei
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 7 ]

发信人: TeacherWei (TW), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 15:21:23 2020, 美东)

这话我欣然领受。作为现代IoT系统的奠基人,责任重大。

你要是知道数据库索引,那就说说Sqlite的primary key咋索引的呗?很困难么?

我确实非常忙,但是我的时间100%自己掌握。每天都有必要的消遣。这个地儿好,想来
就来,想走就走,no string attached。

话说早期用户,每个Hub送1000个Device License。正在做这个label,发货的时候每个
Hub专门生成一个贴上。



【 在 muse (老心理学家) 的大作中提到: 】
: 您才是不世出的大牛,您的iot理论是颠覆性的。我不过是知道一些数据库索引的皮毛
: 而已。
: 不过,我有点奇怪,您这种惜时如金的大牛,怎么会有时间,每天花这么多时间在这里
: 和我们这些凡夫俗子灌水呢?
: 懂b



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]


此主题相关图片如下:

[删除]

 
majia0100
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 8 ]

发信人: majia0100 (majia011118), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 17:34:01 2020, 美东)

只有一个record的key是null的话,还是unique.

【 在 muse (老心理学家) 的大作中提到: 】
: 人笨怪刀钝,如果primary key允许null, 还怎么保证unique。你还是先去搞懂b-
tree,
:  再来喷。
: 【 在 TeacherWei (TW) 的大作中提到: 】
: : 那个其实也不是重点。
: : 重点是primary key,不管有没有null, 都是带 unique index的。
: : 因此优化的代码是一样的。而且你搜一下,这样做的很多,大家都建议单独选min
或者
: : max。而且都是简单的 Primary key 。其中很多 Sqlite 用户。
: : 都是睁眼说瞎话。
: : : In SQL standard, the primary key column must not contain NULL values
: .
: : It
: : : means that the primary key column has an implicit NOT NULL
: constraint.
: : : However, to make the current version of SQLite compatible with the
: : earlier
: : ...................
--
☆ 发自 Android 大灌 20.06.08
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 50.]

 
TeacherWei
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 9 ]

发信人: TeacherWei (TW), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 19:36:12 2020, 美东)

那个人有大量时间来喷,也不知道牵狗搜一下。

我当然是搜到Sqlite比较奇葩,允许null primary key value,才想到去fix。

老顾就知道去搜。

其实,即使sqlite允许多个null value做特例(non-null必须unique),也不应该影响
max的优化。

【 在 majia0100 (majia011118) 的大作中提到: 】
: 只有一个record的key是null的话,还是unique.
: tree,
: 或者



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
anesthetic
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 10 ]

发信人: anesthetic (NYC Cold & TOKYO Hot), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 20:06:51 2020, 美东)


【 在 majia0100 (majia011118) 的大作中提到: 】
: 只有一个record的key是null的话,还是unique.
: tree,
: 或者

null怎么实现b-tree啊。。。

难道if null ...else normal b-tree, 那得多sb啊

--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 173.]

 
TeacherWei
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 11 ]

发信人: TeacherWei (TW), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 20:32:26 2020, 美东)

不能不把null value当value好吧?

Value能在内部,在逻辑上比较大小就好。

谁说B tree不能index null的?


【 在 anesthetic(NYC Cold
--
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
wdong
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 12 ]

发信人: wdong (万事休), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 20:52:18 2020, 美东)

我就服老魏能下沉到代码细节里。

【 在 TeacherWei (TW) 的大作中提到: 】
: 比如SQLITE。
: CREATE TABLE sometable(Id INTEGER PRIMARY KEY)
: 简单吧?就是一个整数数组。而且是PRIMARY KEY
: 现在:
: SELECT MAX(ID) from sometable
: 50万数竟然将近一分钟!不就是二叉树么?竟然是O(n),而不是O(Log(n))
: 上网查是没结果的!只能试
: CREATE TABLE sometable(Id INTEGER PRIMARY KEY NOT NULL)
: 这次只要5秒钟了!
: 问题是,PRIMARY KEY就隐含NOT NULL啊!所有教科书都是这么讲!
: ...................


--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 108.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 13 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 21:11:55 2020, 美东)

有null, worst cast的select的复杂度就是o(n)吧?
所以SQLite的实现没啥问题。


【 在 wdong(万事休) 的大作中提到: 】
<br>: 我就服老魏能下沉到代码细节里。
<br>
--
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 14 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 21:14:19 2020, 美东)

我没细想。但是我认为:
有null,不管你怎么整。Worst case不可能是log的。必然要scan table。

除非你改一套自己的null的定义,以及在上面的代数与或非律。

例如Null == Null 一般是false。所以各种改造目测是很难的。
改造完了估计也没大用。别人还得弄个null2。
【 在 TeacherWei(TW) 的大作中提到: 】
<br>: 不能不把null value当value好吧?
<br>: Value能在内部,在逻辑上比较大小就好。
<br>: 谁说B tree不能index null的?
<br>

--
※ 修改:·guvest 於 Oct 11 21:33:21 2020 修改本文·[FROM: 72.]
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

 
TeacherWei
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 15 ]

发信人: TeacherWei (TW), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 21:37:50 2020, 美东)

需要想么?有没有null,只要有index,必然是log(n)。period。

index里null和null比较是相等的。这是SQL spec规定的。index有index的规矩。只要
比较结果是稳定的就好。这才是应该有的逻辑。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 我没细想。但是我认为:
: 有null,不管你怎么整。Worst case不可能是log的。必然要scan table。
: 除非你改一套自己的null的定义,以及在上面的代数与或非律。
: 例如Null == Null 一般是false。所以各种改造目测是很难的。
: 改造完了估计也没大用。别人还得弄个null2。
: <br>: 不能不把null value当value好吧?
: <br>: Value能在内部,在逻辑上比较大小就好。
: <br>: 谁说B tree不能index null的?
: <br>



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
TeacherWei
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 16 ]

发信人: TeacherWei (TW), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 21:42:33 2020, 美东)

测试机器,几百M的log。重启动发现log get min/max要2分钟,不是一下子就发现了么?

【 在 wdong (万事休) 的大作中提到: 】
: 我就服老魏能下沉到代码细节里。



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]


此主题相关图片如下:

[删除]

 
TeacherWei
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 17 ]

发信人: TeacherWei (TW), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 21:45:05 2020, 美东)

我现在希望偶尔分享一下这些年来一些有趣的事情。。。
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
netghost
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 18 ]

发信人: netghost (Up to Isomorphism), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 21:59:22 2020, 美东)

sql 的標準就是非常貼近人思維的語言,導致這個東西100個數據庫有100種實現,想要
普遍
適用的性能指標幾乎不可能。select max min這個事情,postgres就沒有這個問題。

當然好處也是有的,就是所有地方都在用,經久不衰。我說了,30年來,不管你是who
,學點sql都可以養一大家人沒問題。



【 在 TeacherWei (TW) 的大作中提到: 】
: 比如SQLITE。
: CREATE TABLE sometable(Id INTEGER PRIMARY KEY)
: 简单吧?就是一个整数数组。而且是PRIMARY KEY
: 现在:
: SELECT MAX(ID) from sometable
: 50万数竟然将近一分钟!不就是二叉树么?竟然是O(n),而不是O(Log(n))
: 上网查是没结果的!只能试
: CREATE TABLE sometable(Id INTEGER PRIMARY KEY NOT NULL)
: 这次只要5秒钟了!
: 问题是,PRIMARY KEY就隐含NOT NULL啊!所有教科书都是这么讲!
: ...................


--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 71.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 19 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 22:07:56 2020, 美东)

我之前贴过吧?SQL的null实际上是个三值逻辑问题。

要是follow下面这些Null的规定,我认为是写不出o(log n)的select的。

https://modern-sql.com/concept/three-valued-logic

所以SQLite的select实现没硬伤。当然你可以说语法不便什么的。
【 在 TeacherWei(TW) 的大作中提到: 】
<br>: 需要想么?有没有null,只要有index,必然是log(n)。period。
<br>: index里null和null比较是相等的。这是SQL spec规定的。index有index
的规矩
。只要
<br>: 比较结果是稳定的就好。这才是应该有的逻辑。
<br>

--
※ 修改:·guvest 於 Oct 11 22:10:13 2020 修改本文·[FROM: 72.]
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 20 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: 这个世界很多事难以想象
发信站: BBS 未名空间站 (Sun Oct 11 22:13:42 2020, 美东)

Postgres如果不写NoT Null,查找复杂度是o(n)还是o(log n)?
我怀疑都一样的。


【 在 netghost(Up to Isomorphism) 的大作中提到: 】
<br>: sql 的標準就是非常貼近人思維的語言,導致這個東西100個數據庫有100種實現
,想要
<br>: 普遍
<br>: 適用的性能指標幾乎不可能。select max min這個事情,postgres就沒有這個問
題。
<br>: 當然好處也是有的,就是所有地方都在用,經久不衰。我說了,30年來,不管你
是who
<br>: ,學點sql都可以養一大家人沒問題。
<br>
--
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

[首页] [上页][下页][末页] [分页:1 2 ]
[快速返回] [ 进入葵花宝典讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996