我正在使用MySQL 5.1,我的查询大致是这样的形式:
select count(*) from mytable where a = "foo" and b = "bar";
Run Code Online (Sandbox Code Playgroud)
在我的程序中,它唯一检查的是零或非零.如果我将其转换为:
select exists(select * from mytable where a = "foo" and b = "bar");
Run Code Online (Sandbox Code Playgroud)
MySQL是否足够聪明,可以在第一次搜索时停止搜索?或者是否有其他方式与MySQL通信我的意图只是找出是否有任何记录符合这一点,我不需要一个确切的计数?
好吧,我确定某个人,某个地方必须已经为此提出了一个算法,所以我想在我开始(重新)发明它之前我会问.
我有一个任意(用户输入)非空文本字符串的列表.每个字符串可以是任意长度(0除外),它们都是唯一的.我想将它们显示给用户,但我想将它们修剪为我决定的固定长度,并用省略号(...)替换它们中的一部分.问题是我希望所有输出字符串都是唯一的.
例如,如果我有字符串:
然后我不想修剪字符串的末尾,因为这是独特的部分(不想显示"Microsoft Internet ..."3次),但是切出中间部分是可以的:
其他时候,中间部分可能是唯一的,我想修剪结束:
可能成为:
我想它应该永远不会在字符串的最开头进行椭圆化,即使这样也是允许的,因为这看起来很奇怪.而且我猜它可能会在字符串中超过一个位置,但在合理范围内 - 可能2次就可以了,但是3次或更多似乎过多了.或者可能的次数不如剩余的块的大小重要:椭圆之间少于约5个字符将是毫无意义的.
输入(数量和大小)都不会非常大,因此性能不是主要问题(好吧,只要算法不会尝试愚蠢的事情,就像枚举所有可能的字符串一样,直到它找到一个有效的集合!) .
我想这些要求看起来非常具体,但我实际上相当宽松 - 我只是想描述一下我的想法.
之前有过这样的事吗?是否有一些现有的算法或库可以做到这一点?我用Google搜索了一些但到目前为止没有发现任何类似的内容(但也许我只是在谷歌上搜索).我不得不相信某个人已经想要解决这个问题了!