oracle中,索引是干啥用的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中,索引是干啥用的?相关的知识,希望对你有一定的参考价值。
参考技术A 索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据;Oracle存储索引的数据结构是B*树,位图索引也是如此,只不过是叶子节点不同B*数索引;索引由根节点、分支节点和叶子节点组成,上级索引块包含下级索引块的索引数据,叶节点包含索引数据和确定行实际位置的rowid。使用索引的目的:
1、加快查询速度
2、减少I/O操作
3、消除磁盘排序
4、何时使用索引
5、查询返回的记录数
6、排序表<40%
7、非排序表
<7%
8、表的碎片较多(频繁增加、删除)
这个 makefile 规则中的大括号是干啥用的?
【中文标题】这个 makefile 规则中的大括号是干啥用的?【英文标题】:What are the braces in this makefile rule for?这个 makefile 规则中的大括号是干什么用的? 【发布时间】:2019-01-22 16:41:38 【问题描述】:我正在为一个 Qt 创建的项目读取一个 makefile,它具有以下内容:
backend.cpprelease\.obj::
$(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<<
$<
<<
(以上代码使用 \t 作为配方,并在 makefile 中编写)
规则和配方都让我感到困惑。
我将从规则中的backend
开始。显然release
也有同样的困惑。我假设这是对名为backend
的特定子目录的引用。我猜..\backend\release\bar.obj
会被视为合法目标?但是 make 的哪一部分说这是合法的语法,这里到底发生了什么?
FWIW:这是在注释为:##### implicit rules
的部分中。
版本:GNU Make 4.2.1 Built for x86_64-unknown-cygwin
奖励积分:
解释@<<
和<<
在配方中的使用...(是的,我缺乏 bash shell 技巧...)。这是用$<
引用第一个先决条件并静默重定向它吗?为什么不是$$<
?
谢谢。
【问题讨论】:
您在他们的 GitHub 存储库中有指向该文件的链接吗? @BenjaminW。感谢您的评论,我编辑了问题以使其更清楚 - 此生成文件来自本地 Qt 创建的项目,而不是 Qt github 项目。 这些花括号对 GNU make 没有任何意义,因此就它而言,它们只是被视为任何其他字符。此外,@<<
的东西不是合法的 GNU make(除非他们可能在 makefile 的某处设置了.ONESHELL
)。我怀疑这里生成的makefile是错误的。
另外,你能检查一下你上面例子的内容并修正最后一行的格式吗?它应该只是<<
还是其他什么?
找到了正确的代码格式。
【参考方案1】:
这是一个 NMAKE 批处理模式规则
https://docs.microsoft.com/en-us/cpp/build/batch-mode-rules?view=vs-2017
等效的 GNU Make 规则类似于
backend/%.obj: release/%.cpp:
不同之处在于,顾名思义,这些规则将只为所有有效目标调用一次它们的配方,并期望规则使用$<
宏在一次传递中创建所有目标。
<<
语法是 NMAKE 的内联文件功能
https://docs.microsoft.com/en-us/cpp/build/inline-files-in-a-makefile?view=vs-2017
这会扩展并捕获尖括号之间的所有内容并将其保存到一个文件中,在这种情况下是一个临时文件,因为括号后没有指定文件名。然后通过@
选项将该文件作为配方第一行的响应文件传递给编译器。
【讨论】:
太棒了!谢谢,我完全忘记了 NMAKE!以上是关于oracle中,索引是干啥用的?的主要内容,如果未能解决你的问题,请参考以下文章
oracle forms builder里SET_BLOCK_PROPERY是干啥用的?怎么用