无意中在网上看到一个说查找最小断号的文章,看了一下里面的方法,虽然看似有技巧,实际上执行效率太差,完全不具有实用性。于是自己尝试了一下,还是有高效率的方法的。用下面的SQL语句来实现查找数字型编号的最小断号,在我的笔记本上测试一个十几万行的大表,查出来的时间为0.6秒左右,应该是我知道或者看到的方法中效率最高的了。
SQL语句中的测试表名为“表1“,编号字段名为”ID“。
SELECT Min(ID_A) AS ID
FROM (SELECT ID + 1 AS ID_A FROM 表1 AS 表1_A WHERE NOT EXISTS (SELEC ID FROM 表1 WHERE ID=表1_A.ID+1)) AS X;
|
附言:这个大家只当一个技巧看看就是了,一般在实际应用当中,除了某些特殊情况,建议大家还是尽量避免补断号的处理,在数据库中编号只是作为一个唯一性标识,是给计算机看的,而不是给人看的,所以编号连续不连续没有什么实际意义。