Virtual Index的测试作用

今天偶然有同事建议我使用虚拟索引来测试下oracle的查询选择。看了下网上的文档http://www.oracle-base.com/articles/misc/virtual-indexes.php, 使用很简单。

在正常建索引的语句后面加上“NOSEGMENT”即可。

一下是测试过程记录:

原执行计划如下,

| Id  | Operation                     | Name                  | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |                       | 71467 |    11M|      |  1681K  (1)| 05:36:13 |
|   1 |  HASH GROUP BY                |                       | 71467 |    11M|   12M|  1681K  (1)| 05:36:13 |
|   2 |   NESTED LOOPS                |                       |       |       |      |            |          |
|   3 |    NESTED LOOPS               |                       | 71467 |    11M|      |  1678K  (1)| 05:35:42 |
|*  4 |     TABLE ACCESS FULL         | EDM_MS_OUTPUT_HISTORY | 71385 |  4949K|      |  1392K  (1)| 04:38:35 |
|*  5 |     INDEX RANGE SCAN          | SYS_C0012114_NEW      |     1 |       |      |     3   (0)| 00:00:01 |
|*  6 |    TABLE ACCESS BY INDEX ROWID| EDM_RESPONSES         |     1 |    94 |      |     4   (0)| 00:00:01 |

添加虚拟index:

SQL> create index wow_data.IND_EDM_MS_HIST_1 ON wow_data.EDM_MS_OUTPUT_HISTORY(comm_id,SUBSCRIBERKEY) tablespace INDEXES NOSEGMENT;

Index created.

可以像真实索引一样进行analyze:

SQL> EXEC DBMS_STATS.gather_index_stats('WOW_DATA', 'IND_EDM_MS_HIST_1');
PL/SQL procedure successfully completed.


添加后的执行计划:

| Id  | Operation                     | Name                  | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |                       | 71467 |    11M|      |   842K  (1)| 02:48:34 |
|   1 |  HASH GROUP BY                |                       | 71467 |    11M|   12M|   842K  (1)| 02:48:34 |
|   2 |   MERGE JOIN                  |                       | 71467 |    11M|      |   840K  (1)| 02:48:03 |
|*  3 |    TABLE ACCESS BY INDEX ROWID| EDM_MS_OUTPUT_HISTORY | 71385 |  4949K|      |   490  (95)| 00:00:06 |
|*  4 |     INDEX FULL SCAN           | IND_EDM_MS_HIST_1     |   188K|       |      |   487  (95)| 00:00:06 |
|*  5 |    SORT JOIN                  |                       |   575K|    51M|  124M|   839K  (1)| 02:47:57 |
|*  6 |     TABLE ACCESS FULL         | EDM_RESPONSES         |   575K|    51M|      |   827K  (1)| 02:45:28 |

这里它改变了其他表的执行计划,但是也有一定的效果. 如果需要使用EDM_RESPONSES的索引可以使用hint来调用。

删除虚拟index:

SQL> drop index wow_data.IND_EDM_MS_HIST_1 ;
Index dropped.


Virtual Index仅供测试使用,但是它提供了无需浪费时间建索引就可以来查看到oracle针对特定index的执行计划。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是完成上述任务的Ubuntu命令和过程: 1. 安装Apache并启动服务: ``` sudo apt-get update sudo apt-get install apache2 sudo systemctl start apache2 ``` 在网站主目录下添加首页文件index.html: ``` sudo nano /var/www/html/index.html ``` 在打开的文件中添加以下内容: ``` this is 姓名拼音’s homepage ``` 保存并退出,然后使用真实机访问web服务,即可看到首页文件中的内容。 2. 禁止服务器本机IP访问主页: ``` sudo nano /etc/apache2/sites-available/000-default.conf ``` 找到以下行: ``` <Directory /var/www/html> ``` 在该行下方添加以下内容: ``` Require all denied ``` 保存并退出,然后在服务器本机访问首页,应该会显示403 Forbidden。 3. 设置访问网站主目录时需要输入用户名密码: ``` sudo htpasswd -c /etc/apache2/.htpasswd 姓名拼音 ``` 输入自己的密码并确认。然后修改Apache配置文件: ``` sudo nano /etc/apache2/sites-available/000-default.conf ``` 找到以下行: ``` <Directory /var/www/html> ``` 在该行下方添加以下内容: ``` AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require user 姓名拼音 ``` 保存并退出,然后使用真实机访问首页,应该会提示输入用户名和密码。 4. 设置虚拟目录/姓名拼音,指向真实目录/virtualdir: ``` sudo mkdir /virtualdir sudo nano /etc/apache2/sites-available/000-default.conf ``` 找到以下行: ``` DocumentRoot /var/www/html ``` 在该行下方添加以下内容: ``` Alias /姓名拼音 /virtualdir <Directory /virtualdir> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> ``` 保存并退出,然后在/virtualdir下建首页文件index.html: ``` sudo nano /virtualdir/index.html ``` 在打开的文件中添加以下内容: ``` this is 姓名拼音’s virtualdir ``` 保存并退出,然后使用真实机访问虚拟目录/姓名拼音,即可看到首页文件中的内容。 5. 设置用户主页: ``` sudo mkdir /home/姓名拼音/public_html sudo nano /home/姓名拼音/public_html/index.html ``` 在打开的文件中添加以下内容: ``` this is 姓名拼音’s userdir ``` 保存并退出,然后修改Apache配置文件: ``` sudo nano /etc/apache2/mods-enabled/userdir.conf ``` 找到以下行: ``` #UserDir public_html ``` 将该行改为: ``` UserDir public_html ``` 保存并退出,然后重启Apache服务: ``` sudo systemctl restart apache2 ``` 在真实机上使用http://服务器IP/~姓名拼音访问用户主页,即可看到首页文件中的内容。 6. 设置虚拟主机: ``` sudo nano /etc/apache2/sites-available/virtualhost1.conf ``` 添加以下内容: ``` <VirtualHost *:80> ServerName www.virtualhost1.com DocumentRoot /var/www/virtualhost1 </VirtualHost> ``` 保存并退出,然后创建虚拟主机目录并添加首页文件: ``` sudo mkdir /var/www/virtualhost1 sudo nano /var/www/virtualhost1/index.html ``` 在打开的文件中添加以下内容: ``` this is 姓名拼音’s virtualhost1 ``` 保存并退出,然后启用虚拟主机配置文件并重启Apache服务: ``` sudo a2ensite virtualhost1.conf sudo systemctl reload apache2 ``` 同样的方式设置虚拟主机www.virtualhost2.com。在真实机使用不同域名访问,即可测试虚拟主机结果。 7. 安装PHP并创建index.php: ``` sudo apt-get install php sudo nano /var/www/html/index.php ``` 在打开的文件中添加以下内容: ``` <?php phpinfo(); ?> ``` 保存并退出,然后使用真实机访问http://服务器IP/index.php,即可看到PHP信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值