小编Law*_*nce的帖子

超过1列的B树索引是什么样的?

所以我正在阅读索引及其实现,我偶然发现了这个简短解释b-tree索引的网站:

http://20bits.com/articles/interview-questions-database-indexes/

b-tree索引对于仅在单个列上的索引非常有意义,但是假设我创建了一个包含多列的索引,那么b-tree如何工作呢?b树中每个节点的价值是多少?

例如,如果我有这个表:

table customer:
id    number
name   varchar
phone_number   varchar
city   varchar
Run Code Online (Sandbox Code Playgroud)

我创建了一个索引:(id,name,city)

然后运行以下查询:

SELECT id, name 
  FROM customer
 WHERE city = 'My City';
Run Code Online (Sandbox Code Playgroud)

该查询如何利用多列索引,或者除非将索引创建为(city,id,name)或(city,name,id),否则它不会使用它?

database sql-server oracle indexing

28
推荐指数
4
解决办法
1万
查看次数

数据库游标是否会获取对基础数据的更改?

关于游标的快速问题(特别是Oracle游标).

假设我有一个名为"my_table"的表,它有两列,一个ID和一个名字.有数百万行,但name列始终是字符串'test'.

然后我运行这个PL/SQL脚本:

declare
 cursor cur is
  select t.id, t.name
    from my_table t
   order by 1;
 begin
   for cur_row in cur loop
     if (cur_row.name = 'test') then
        dbms_output.put_line('everything is fine!');
     else
        dbms_output.put_line('error error error!!!!!');
        exit;
     end if;
   end loop;
 end; 
 /
Run Code Online (Sandbox Code Playgroud)

如果我在运行时运行此SQL:

 update my_table 
   set name = 'error'
  where id = <max id>;
commit;
Run Code Online (Sandbox Code Playgroud)

PL/SQL块中的光标是否会接收该更改并打印出"错误错误错误"并退出?或者它根本不会接受更改......或者它是否会允许更新my_table?

谢谢!

database oracle cursors

9
推荐指数
1
解决办法
3527
查看次数

SQLite 查询使用 TEMP B-TREE FOR ORDER BY 而不是索引

我有一个非常简单的表,其中包含 2 列:message_id 和 server_timestamp,但是当我查看此查询的计划时:

sqlite> explain query plan select message_id, server_timestamp from messages group by message_id order by server_timestamp;
selectid|order|from|detail
0|0|0|SCAN TABLE messages USING COVERING INDEX index_messages_id_server_timestamp
0|0|0|USE TEMP B-TREE FOR ORDER BY
Run Code Online (Sandbox Code Playgroud)

其中index_messages_id_server_timestamp 是(message_id, server_timestamp) 上的索引。

为什么这个查询需要使用临时 B 树进行排序?

sqlite sorting indexing query-planner

3
推荐指数
1
解决办法
1779
查看次数

快速xslt for-each问题

假设我有一个包含以下内容的XML文档:

<keywords>
<keyword>test</keyword>
<keyword>test2</keyword>
<keyword>test3</keyword>
<keyword>test4</keyword>
</keywords>
Run Code Online (Sandbox Code Playgroud)

我想使用XSLT在HTML中打印出来,如下所示:

<ul>
<li>test</li>
<li>test2</li>
<li>test3</li>
<li>test4</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我的XSLT会是什么样子?我试过这个:

<ul>
<xsl:for-each select="keywords/keyword">
    <li><xsl:value-of select="keyword"/></li>
</xsl:for-each>
</ul>
Run Code Online (Sandbox Code Playgroud)

但是这不会打印出关键字值,只是一个空白项.

<ul>
<xsl:for-each select="keywords">
    <li><xsl:value-of select="keyword"/></li>
</xsl:for-each>
</ul>
Run Code Online (Sandbox Code Playgroud)

不起作用(出于显而易见的原因),但至少打印出第一个关键字!

建议?谢谢!

xml xslt

0
推荐指数
2
解决办法
266
查看次数

标签 统计

database ×2

indexing ×2

oracle ×2

cursors ×1

query-planner ×1

sorting ×1

sql-server ×1

sqlite ×1

xml ×1

xslt ×1