#使用库
USE HBase;
#创建计数表
CREATE TABLE IF NOT EXISTS cnt(id INT);
#创建存储过程(用来给计数表插入数据)
DELIMITER $
#创建存储过程并设置名字为cnt
CREATE PROCEDURE cnt()
BEGIN
#定义一个循环变量(方法)(i 类型为int 默认值为0)
DECLARE i INT DEFAULT 0;
#从1到9999
WHILE(i<10000) DO
BEGIN
#获取i
SELECT i;
#每次i+1
SET i=i+1;
#每次把i插入到计数表内
INSERT INTO cnt(id)VALUES(i);
END;
#结束循环代码快 = }
END WHILE;
END $
DELIMITER ;
#调用存储过程(也就是调用方法)
CALL cnt();
#清理缓存
RESET QUERY CACHE;
#count的优化
#查询语句a(普通查询)
SELECT COUNT(*) FROM cnt WHERE id > 5;
#查询语句b(优化查询,更快)
#下面代码执行步骤是
#1、SELECT COUNT(*) FROM cnt WHERE id <= 5; 行数为5
#2、SELECT (SELECT COUNT(*) FROM cnt) - COUNT(*)
#FROM cnt WHERE id <= 5; 行数为 10000-5=9995
SELECT (SELECT COUNT(*) FROM cnt) - COUNT(*)
FROM cnt WHERE id <= 5;
#数据不兼容会拉低效率(因为要多一步,进行强转)
#这里是将int类型的数据转换为float类型
INSERT INTO cnt(id)VALUES(123.45);
#创建索引(索引名称为index_age)、给cnt表中的age字段创建。
CREATE INDEX index_age ON cnt(age);
#索引列进行运算会让索引失效
#这种合理
SELECT * FROM cnt WHERE age > 18;
#这种则会失效
SELECT * FROM cnt WHERE age*2 > 26;