我想在我拥有的视图上创建一个索引,但我需要确保在创建索引的同时仍然可以读取数据。我读到一篇,它建议在创建非聚集索引时,如果指定ONLINE=ON选项(示例如下),数据仍然是可读的:
CREATE UNIQUE CLUSTERED INDEX CLUST_IDX_SQLTIPS
ON SQLTips (tip) with (ONLINE=ON)
我的理解正确吗?在创建索引之前,是否有任何潜在的问题需要我在创建索引时可读的视图上创建?
如果table_name有3列(a,b,c),我将用这3列创建一个索引:
CREATE INDEX idx_table_name_a_b_c ON table_name (a,b,c);
但是已经有了我之前创建的列a的索引:
CREATE INDEX idx_table_name_a ON table_name (a);
我应该只为另外2列创建,还是为那3列也包括列a的列创建(使用上面的查询)?
我现在正在研究如何为我们的表创建索引。
我发现了多个on索引,但我不确定会产生什么影响。示例:
我们在findById、findByIdAndStatus、findByResult上有SQL。
它说,在WHERE上使用最多的应该首先在列列表中列出。但我在想,如果我在不同的组合where子句上创建索引,它是否会产生巨大的影响。
这:(为所有人创建一个索引)
CREATE INDEX CONCURRENTLY ON Students (id, status, result)
与
这:(在不同的查询上创建不同的索引)
CREATE INDEX CONCURRENTLY ON Students (id
我是mySQL新手,试图从甲骨文迁移到mySQL,我有一个索引,需要转换成MySQL。在oracle中,我使用2列创建了这个索引,如下所示:
CREATE INDEX TEST ON TABLE(COL1||'/'||COL2, COL3)
现在,我正试图在mySQL中找到替代方案。我知道我可以在sql中的多个列上创建索引,如下所示:
CREATE INDEX TEST on TABLE(COL1, COL2)
但我希望在多个列上创建索引,这样就可以使用'/‘分隔符将COL1和COL2组合起来,并在其上创建索引。我发现我可以创建一个生成的列并在其上创建索引。所以基本上我
例如,当我使用以下代码在db2上创建索引时:
CREATE INDEX T_IDX ON T(
A,
B)
它是一个综合指数吗?如果不是,那么我如何创建一个综合索引呢?如果是:为了有两个不同的索引,我应该将它们分别创建为:
CREATE INDEX T1_IDX ON T(A)
CREATE INDEX T2_IDX ON T(A)
编辑:这个讨论没有朝着我期望的方向发展(而是在一个更好的方向上:)我实际上问的是如何创建单独的索引,而不是为什么创建单独的索引,我计划在另一个问题中这样做,但由于您已经预料到了我:
假设我有一个表T(A,B,C)和一个搜索函数search(),它使用以下任一方法从
我在几个地方读到,您使用任何字段将查询结果限制为索引。但是,假设您有一个应用程序,其中不同的查询使用不同的列组合。
例如,假设有三个查询,如下所示:
Select * from table1 where field1 = 'A';
Select * from table1 where field1 = 'A' and field2 = 'B';
Select * from table1 where field1 = 'A' and field3 = 'C';
为field1创建一个索引、为fie
在我的ADW实例上,由自动索引创建的索引在默认情况下是压缩的,但手动创建的索引不是。
为什么默认情况下手动创建的索引不进行压缩?
Test case:
==========
SQL> create table a (a number);
Table created.
SQL> create index a_ind on a (a);
Index created.
SQL> select INDEX_NAME,COMPRESSION from dba_indexes where index_name='A_IND';
INDEX_NAME
--------