时间:2021-07-01 10:21:17 帮助过:94人阅读
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/database/autocreateindex_script_release.html 写了个自动建索引的脚本,基本原理是解析SQL 的条件,然后得出每个条件
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/database/autocreateindex_script_release.html
写了个自动建索引的脚本,基本原理是解析SQL的条件,然后得出每个条件的运算符,最后通过优先级矩阵将可以建索引的列排序求最长的序列,也就是尽可能把更多的列包含进索引。
使用方法:
./AutoCreateIndex.pl -e “你的SQL”
对于多表连接,务必将列名前跟上表名,否则无法处理,因为脚本并不连接数据库,无法判断哪个列属于那个表。
测试版本,Bug很多,欢迎提供意见。
下面是一些例子
plx@plinux-Laptop:~/Dropbox/MySQLScript$ ./AutoCreateIndex.pl -e "SELECT * FROM foo1 a,foo2 b WHERE 'fdsfsa'=a.col1 AND b.col2 = 'abc' AND a.col1=b.col2 AND a.col3 >1 ORDER BY b.col3,b.col1" ALTER TABLE foo1 ADD INDEX idx (col1,col3); ALTER TABLE foo2 ADD INDEX idx (col2,col3,col1); plx@plinux-Laptop:~/Dropbox/MySQLScript$ ./AutoCreateIndex.pl -e "SELECT * FROM t1 where t1 =1 and t2=2" ALTER TABLE t1 ADD INDEX idx (t2,t1); plx@plinux-Laptop:~/Dropbox/MySQLScript$ ./AutoCreateIndex.pl -e "SELECT * FROM t1 where col1=1 and col2=4" ALTER TABLE t1 ADD INDEX idx (col1,col2); plx@plinux-Laptop:~/Dropbox/MySQLScript$ ./AutoCreateIndex.pl -e "SELECT * FROM t1 where col1>1 and col2=4" ALTER TABLE t1 ADD INDEX idx (col2,col1);