Ad Hoc:即席查询是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。普通应用查询是定制的,不能被改变,而即席查询是由用户自定义查询条件的。
实质上是一个统计报表,条件是由用户自定义的查询条件。
在数据仓库中有一个概念即为即席查询,即席查询是指用户在使用系统时,根据自己当时的需求定义的查询。即席查询生成的方式很多,最常用的就是使用即席查询工具。一般的数据展现工具都会提供即席查询的功能。通常的方式是,将数据仓库的维度表和事实表映射到语义层,用户可以通过语义层选择表,建立表间的关联,最终生成SQL语句。即席查询与通常查询从SQL语句上来说,并没有本质的差别。他们之间的差别在于,通常的查询在系统设计和实施时是已知的,所以我们可以在系统实施时通过建立索引,分区等技术来优化这些查询,使这些查询的效率很高。而即席查询是用户在使用时临时生产的,系统无法预先优化这些查询,所以即席查询也是评估数据仓库的一个重要指标。即席查询的位置通常是在关系型的数据仓库中,即在EDW或者ROLAP中。多维数据库有自己的存储方式,对即席查询和通常查询没有区别。在一个数据仓库系统中,即席查询使用的越多,对数据仓库的要求越高,对数据模型的对称性要求越高。对称性的数据模型对所有的查询都是相同的,这也是维度建模的一个优点。
总结:用户在使用系统的时候根据自己的需求进行自定义查询条件,系统根据用户自定义的条件生成相应的统计报表,与普通的查询语句不同的是,普通查询语句是定制的可以提前进行建立索引,分区进行优化,因为即席查询是临时的,所以无法进行预先优化。
他人观点:尽可能快的执行自定义的SQL语句(可能无法提前运算和预测)