高分求助一条SQL语句(高级查询),请高手们来,分不够可以继续添加
现在有以下这个表
表的结构如下
Publish_SN int(4) 唯一,自动增长
Publish_ID char(255) 唯一,不允许重复
表中有以下的测试数据,Publish_SN因为是自动增长,暂不考虑
Publish_ID
20001/XXXXXXXX
20001/XXXXXXXX
20001/XXXXXXXX
20001/XXXXXXXX
20002/XXXXXXXX
20002/XXXXXXXX
20003/XXXXXXXX
20003/XXXXXXXX
字符串以20001打头的记录有1000条,
字符串以20002打头的记录有450条,
字符串以20003打头的记录有550条,
我想实现把
20001/XXXXXX等数据放到一个页面的DataGrid中
20002/XXXXXX等数据放到一个页面的DataGrid中
20003/XXXXXX等数据放到一个页面的DataGrid中
先说一下我的思路
首先先
Select Publish_ID from Table
把每条数据都取出来之后,每条记录进行字符串分析
定义一个string ListKey[];
一个string链表来记录Publish_ID字符“/”前面的字符串
然后我再一次去查找表中的数据
查询语句如下
Select Publish_ID from Table
where Publish_ID LIKE 'key[/]%'
注明:key就是链表ListKey中的一个值
这种方法我已经作出来了,但是想了又想觉得不妥,因为这种方法速度
太慢,
计算了一下查询的次数如下
如果Publish_ID字符“/”前面的字符串共有7种吧
那查询表的次数为8次
如果是2000条记录,那查询记录8×2000条,
这些都是保守估计,如果1万条记录就更加多了
如果再考虑到代码的效率问题,问题更多,时间效率又会在添加链表的时候
成级数增长,因为你必须对每个Publish_ID字符“/”前面的字符串和链表
中的数据进行比对,使链表中的数据避免重复
这对于一台性能不高的机器简直就是一个灾难。
当然要想解决这种表的问题也很简单,数据库添加一个字段,
专门记录Publish_ID字符“/”前面的字符串,
但是这个数据库是设计师设计的,不允许我再添加一个字段
所以希望大家给我提供一个解决方案,能使这种分页查询速度得以提升
性能得以优化,速度更快