当网站文章数据量大,比如十万级别的文章数据,这时要生成栏目列表时,如果没能正确使用自定义SQL标签,那么生成栏目分页的速度可能会非常慢。有两种解决方法:
1、生成栏目列表分页时,使用系统函数标签 如:{LB_文章终级列表}
系统函数标签性能比SQL标签好得多,尤其在执行数据量大的操作时这点尤其明显
原因可能如下:
因为系统函数标签是预定义的,它们被直接集成到CMS系统中,因此执行速度较快。相比之下,SQL标签需要编写和执行SQL查询语句,这涉及到数据库的查询和数据处理,通常比系统函数标签的执行过程更复杂,因此速度较慢。此外,使用SQL标签可能需要编写和优化SQL语句,这增加了额外的工作量和复杂性,进一步影响了执行速度。
所以,尽量使用系统函数标签。
2、如果必须用SQL分页标签,那么SQL标签里的SQL语句调用时使用KS_iteminfo数据表,而不是KS_ARTICLE等数据表。
SQL语句如下:
select id,infoid,title,keywords,intro,photourl,tid,channelid,fname from KS_ItemInfo where channelid=1 and tid ='{$CurrClassID}' order by id desc
循环体举例:
<a href="{$GetItemUrl}">{$Field(title,Text,0,...,0,)}</a>
以下是引用官方说明:
查询KS_ItemInfo表时,允许使用{$GetItemUrl}得到文档的URL链接
如:当有查询到KS_ItemInfo表时,可以使用{$GetItemUrl}来得到文档的URL,但要在查询的SQL语句中包含ChannelID,InfoID,Tid,Fname四个字段。
举例:select top 10 i.channelid,i.infoid,i.tid,i.fname,title,diggnum from KS_digglist d inner join ks_iteminfo i on d.infoid=i.infoid where d.channelid=i.channelid order by diggnum desc
循环体:[loop=10]<a href="{$GetItemUrl}">{$Field(title,Text,0,...,0,)}</a>[/loop]