我正在寻找检索记录的下一个和上一个记录而不运行完整查询的最佳方法.我有一个完全实现的解决方案,并想知道是否有更好的方法来实现这一点.
假设我们正在为一个虚构的蔬菜水果商建立一个网站.除了他的HTML页面,他每周都希望在他的网站上发布特别优惠列表.他希望这些商品位于实际的数据库表中,用户必须能够以三种方式对商品进行排序.
每个项目还必须有一个详细信息页面,其中包含有关提供的更多文本信息以及"之前"和"下一步"按钮."上一个"和"下一个"按钮需要指向相邻条目,具体取决于用户为列表选择的排序.
alt text http://www.pekkagaiser.com/stuff/Sort.gif?
显然,"西红柿,第一类"的"下一步"按钮必须是第一个例子中的"苹果,第1类",第二个中是"梨,第一类",第三个中没有.
详细信息视图中的任务是确定下一个和上一个项目,而不是每次都运行查询,列表的排序顺序是唯一可用的信息(假设我们通过GET参数得到它?sort=offeroftheweek_price
,并忽略安全隐患) .
显然,简单地将下一个和前一个元素的ID作为参数传递是第一个想到的解决方案.毕竟,我们现在已经知道了ID.但是,这不是一个选项 - 它可以在这个简化的例子中工作,但在我的许多现实世界的用例中都没有.
我在CMS中的当前方法是使用我命名为"排序缓存"的东西.加载列表时,我将项目位置存储在名为的表中的记录中sortingcache
.
name (VARCHAR) items (TEXT)
offeroftheweek_unsorted Lettuce; Tomatoes; Apples I; Apples II; Pears
offeroftheweek_price Tomatoes;Pears;Apples I; Apples II; Lettuce
offeroftheweek_class_asc Apples II;Lettuce;Apples;Pears;Tomatoes
Run Code Online (Sandbox Code Playgroud)
很明显,该items
列实际上填充了数字ID.
在详细信息页面中,我现在访问相应的sortingcache
记录,获取items
列,将其展开,搜索当前项ID,并返回上一个和下一个邻居.
array("current" => "Tomatoes",
"next" => "Pears",
"previous" => null
);
Run Code Online (Sandbox Code Playgroud)
这显然很昂贵,仅适用于有限数量的记录并创建冗余数据,但我们假设在现实世界中,创建列表的查询非常昂贵(确实如此),在每个详细视图中运行它都是在问题,需要一些缓存.
我的问题:
您是否认为查找不同查询订单的相邻记录是一种很好的做法?
您是否了解性能和简单性方面的更好实践?你知道一些让它完全过时的东西吗?
在编程理论中,这个问题有没有名称?
名称"Sorting cache"是否适用于此技术并且可以理解?
是否有任何公认的常见模式可以解决这个问题?他们叫什么?
注意:我的问题不是建立列表,或者如何显示详细信息视图.这只是例子.我的问题是当重新查询不可能时确定记录的邻居的基本功能,以及到达那里的最快和最便宜的方式.
如果不清楚,请发表评论我会澄清.
开始赏金 - 也许有更多关于此的信息.
在放弃丑陋的bash脚本之后,我一直在学习如何在今天的大部分时间里使用Python.
我正在尝试使用2个类来定义一些对象数组,其中存储一些唯一的字符串和整数(1-10).对象将包括以下内容:
object[i].user
.n # n = i
.name
.coords
.hero
Run Code Online (Sandbox Code Playgroud)
(param1,param2,param3)对于每个object.n和object.user都是不同的,所以我在尝试使用一个在编写90个唯一字符串后看起来不像垃圾的赋值方法.嵌套我发现的例子不起作用,所以这里是妥协:
class CityBean:
def __init__(self,name,coords,hero):
self.name = name
self.coords = coords
self.hero = hero
class Castles:
def __init__(self,user,n):
self.user = user
self.n = n
if self.user == 'user1':
temp = {
1: CityBean( "name1" , "coord1" , "hero1"),
... blah blah blah
10: CityBean( "name10" , "coord10" , "hero10" )}[self.n]()
if self.user == 'user2':
temp = {
1: CityBean( "name11" , "coord11" , "hero11" ),
... blah blah blah …
Run Code Online (Sandbox Code Playgroud) 我正在阅读的那本书说明了这一点
SQL Server支持两种字符数据类型 - 常规和Unicode.常规数据类型包括CHAR和VARCHAR,Unicode数据类型包括NCHAR和NVARCHAR.不同之处在于常规字符为每个字符使用一个字节的存储空间,而Unicode字符每个字符需要两个字节.每个字符有一个字节的存储空间,选择列的常规字符类型会限制除了英语之外只有一种语言,因为只有256(2 ^ 8)个不同的字符可以用单个字节表示.
我所知道的是,如果我使用Varchar,那么我只能使用一种语言(例如印地语,印度语)和英语.
但是当我跑这个
Create Table NameTable
(
NameColumn varchar(MAX) COLLATE Indic_General_90_CI_AS_KS
)
Run Code Online (Sandbox Code Playgroud)
它显示错误"只有Unicode数据类型支持Collation'Indra_General_90_CI_AS_KS',不能应用于char,varchar或text数据类型."
那么我在哪里误解了作者呢?
谢谢
我在表单中使用JQuery显示/隐藏功能(用php生成)
在这种形式中,有10个隐藏元素,每次用户点击"添加另一个"链接时,它会显示下一个隐藏元素,我的页脚会随之下降.到现在为止还挺好.
现在问题是在显示2或3个隐藏元素后,页面变得更大并且出现了来自firefox的右导航滚动条,这很好,但是当我点击下一个"添加另一个"链接时,导航滚动条轻弹在显示隐藏元素时返回页面顶部.添加新隐藏元素的每个链接都会使页面轻弹回到顶部,我不希望这种行为......
有谁知道解决这个问题的方法?
SQL Server中;
和GO
存储过程之间有什么区别?
实际上,如果我在SQL服务器中有一个存储过程,并且想要在其中放置单独的查询,其中第一个只计算记录数(计数)而第二个根据某些条件选择一些记录,那么我应该在那两个问题?
Go
要么 ;
我使用泛型相当长的时间,但我从来没有使用像List<? super T>
.
这是什么意思?如何使用它?擦除后如何看待?
我也想知道:它是泛型编程(模板编程?)中的标准还是它只是一个java'发明'?例如,c#是否允许类似的结构?
如何用CSS或HTML实现它?
<table class="banner"><tr><td>If you need many results, then post your task as piecework here. You only need to pay qualified results.
</td>
<td>Make money by doing piecework</td></tr>
<tr><td><a href="publish.php">POST PIECEWORK FOR FREE</a><br/></td><td></td></tr></table>
Run Code Online (Sandbox Code Playgroud) 我在Java中加密字符串,当我打印加密数据时,我只看到问号.
举个例子:
纯文本: jjkkjlkljkj
加密文字: ???????????
再次解密这个文本后,我又来jjkkjlkljkj
了.
所以看起来加密工作正常.但为什么我只能看到问号呢?
我得到以下错误任何想法?仅当控制器调用ValidateForm()方法时才会收到此错误消息.
无法加载文件或程序集'System.Web.Abstractions,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
我将visual studio 2005安装在一台机器(开发机器)上,并将SQL Server 2005安装在另一台机器上.但只有当我们使用SSRS安装SQL Server时,我们才能在Visual Studio中获取商业智能项目模板.
现在在另一台机器上安装SQL Server如何在开发机器中的VS 2005中创建一个报表服务器项目?
谢谢.
关心NLV
sql-server reportserver reporting-services business-intelligence
sql-server ×3
java ×2
.net ×1
algorithm ×1
c# ×1
class ×1
collation ×1
css ×1
encryption ×1
generics ×1
html ×1
instance ×1
jquery ×1
mysql ×1
navigation ×1
php ×1
pseudocode ×1
python ×1
reportserver ×1
show-hide ×1
sql ×1