在Microsoft SQL Server中,可以指定“不区分重音”的sorting规则(对于数据库,表或列),这意味着可能会执行类似查询 SELECT * FROM users WHERE name LIKE 'João' find一个与Joao名字。 我知道可以使用unaccent_string contrib函数从PostgreSQL中的string中删除重音,但是我想知道PostgreSQL是否支持这些“不区分变音”的sorting规则,所以上面的SELECT可以工作。
假设我有一个客户表和一个购买表。 每笔购买都属于一个客户。 我想在一个SELECT语句中获得所有客户的列表以及最后一次购买。 最佳做法是什么? 任何关于build立索引的build议? 请在答案中使用这些表格/列名称: 客户:身份证,姓名 购买:id,customer_id,item_id,date 而在更复杂的情况下,通过将最后一次购买放入客户表中,使数据库非规范化(性能明智)是否有益? 如果(购买)ID保证按datesorting,那么可以通过使用类似LIMIT 1简化来简化语句?
我有一个如下所示的表格: CREATE TABLE tracks (id SERIAL, artists JSON); INSERT INTO tracks (id, artists) VALUES (1, '[{"name": "blink-182"}]'); INSERT INTO tracks (id, artists) VALUES (2, '[{"name": "The Dirty Heads"}, {"name": "Louis Richards"}]'); 还有其他几个与这个问题无关的列。 有一个理由把它们存储为JSON。 我想要做的是查找一个具有特定艺术家名字 (完全匹配)的曲目。 我正在使用这个查询: SELECT * FROM tracks WHERE 'ARTIST NAME' IN (SELECT value->>'name' FROM json_array_elements(artists)) 例如 SELECT * FROM tracks WHERE 'The […]
我试图replacestring中特定索引处的字符。 我正在做的是: String myName = "domanokz"; myName.charAt(4) = 'x'; 这给了一个错误。 有没有办法做到这一点?
我已经看到在我的数据库中的特定表LIKE查询响应时间相当大的变化。 有时我会在200-400毫秒(非常可接受的)内得到结果,但有些时候可能需要多达30秒才能返回结果。 我知道LIKE查询是非常耗费资源的,但我不明白为什么会有这么大的响应时间差异。 我已经在owner1字段上构build了一个btree索引,但我不认为这对LIKE查询有帮助。 任何人有任何想法? 示例SQL: SELECT gid, owner1 FORM parcels WHERE owner1 ILIKE '%someones name%' LIMIT 10 我也试过: SELECT gid, owner1 FROM parcels WHERE lower(owner1) LIKE lower('%someones name%') LIMIT 10 和: SELECT gid, owner1 FROM parcels WHERE lower(owner1) LIKE lower('someones name%') LIMIT 10 有类似的结果。 表行数:约95,000。
我有下面的数组,我想重新索引,所以键被颠倒(理想情况下从1开始): 当前数组( 编辑:数组实际看起来像这样): Array ( [2] => Object ( [title] => Section [linked] => 1 ) [1] => Object ( [title] => Sub-Section [linked] => 1 ) [0] => Object ( [title] => Sub-Sub-Section [linked] => ) ) 它应该如何: Array ( [1] => Object ( [title] => Section [linked] => 1 ) [2] => Object […]
我在Postgres 9.2中有下面的表格(简化forms) CREATE TABLE user_msg_log ( aggr_date DATE, user_id INTEGER, running_total INTEGER ); 它每个用户和每天最多包含一条logging。 300天内每天将会有大约50万条logging。 每个用户的running_total总是在增加。 我想在特定date之前有效地检索每个用户的最新logging。 我的查询是: SELECT user_id, max(aggr_date), max(running_total) FROM user_msg_log WHERE aggr_date <= :mydate GROUP BY user_id 这是非常缓慢的。 我也试过了: SELECT DISTINCT ON(user_id), aggr_date, running_total FROM user_msg_log WHERE aggr_date <= :mydate ORDER BY user_id, aggr_date DESC; 它有相同的计划,同样缓慢。 到目前为止,我在user_msg_log(aggr_date)上有一个索引,但没有多大帮助。 有没有其他的指标,我应该用来加快这一点,或者任何其他方式来实现我想要的?
有什么办法可以从查询中得到实际的行号吗? 我希望能够通过一个名为score的字段来订购名为league_girl的表格; 并返回用户名和该用户名的实际行位置。 我想排名的用户,所以我可以告诉哪里是一个特定的用户,即。 Joe是200中的第100位,即 User Score Row Joe 100 1 Bob 50 2 Bill 10 3 我已经在这里看到了一些解决scheme,但是我已经尝试了大部分解决scheme,其中没有一个实际返回行号。 我试过这个: SELECT position, username, score FROM (SELECT @row := @row + 1 AS position, username, score FROM league_girl GROUP BY username ORDER BY score DESC) 作为派生 …但似乎没有返回行的位置。 有任何想法吗?
对于列表["foo", "bar", "baz"]和列表"bar"的项目,在Python中获取索引(1)的最简单方法是什么?
鉴于索引是如此重要,因为你的数据集增加的大小,有人可以解释如何索引工作在数据库无关的水平? 有关查询索引字段的信息,请查看如何索引数据库列 。