or 和 in 效率对比
《mysql数据库开发的36条军规》里面提到了or和in的效率问题,文中提到or的效率为O(n),而in的效率为O(logn), 当n越大的时候效率相差越明显
如果ax=N(a>0,且a≠1),那么数x叫做以a为底N的对数,记作x=logaN,读作以a为底N的对数,其中a叫做对数的底数,N叫做真数
当a>0,a≠1时,aX=N X=logaN。(N>0)
在MySQL数据库中关闭query cache,数据库缓存不会对查询造成影响,数据库版本为5.1.63
测试代码:
1. #创建测试的test表
2. DROP TABLE IF EXISTS test;
3. CREATE TABLE test(
4. ID INT(10) NOT NULL,
5. `Name` VARCHAR(20) DEFAULT '' NOT NULL,
6. PRIMARY KEY( ID )
7. )ENGINE=INNODB DEFAULT CHARSET utf8;
8.
9. #创建生成测试数据的存储过程
10. DROP PROCEDURE IF EXISTS pre_test;
11. DELIMITER //
12. CREATE PROCEDURE pre_test()
13. BEGIN
14. DECLARE i INT DEFAULT 0;
15. SET autocommit = 0;
16. WHILE i<10000000 DO