当前位置: 首页 > news >正文

按QQ查询QQ群数据库的方法

1.为所有的表创建索引

    ADD INDEX `QunNum_index` (`QunNum`);
    ADD INDEX `QQNum_index` (`QQNum`)  ;

2.创建存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `SearchByQQ`(IN `qq` int)
BEGIN
    DECLARE i int;
    DECLARE tblname VARCHAR(10);    
    DECLARE sql_text VARCHAR(1000);

    DROP TABLE IF EXISTS `temp`;
    CREATE TABLE `temp`(QQNum int,nick varchar(100),QunNum int) ENGINE=MEMORY;
    SET i=1;
        WHILE i<1100 DO
        SET tblname=CONCAT('group',i);
        SET sql_text=concat('insert into `temp` select QQNum,nick,QunNum from ' , tblname , ' where QQNum=' , qq , ';');
        SET @sql_text=sql_text;

        PREPARE stmt FROM @sql_text;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

        SET i=i+1;
    END WHILE;
    SELECT * FROM `temp`;
END

3.编写PHP

赶时间,瞎写的。
<?php
set_time_limit(60);
?>
<!DOCTYPE html>
<html>
<head>
   <title>QQGroup Search System v1.0</title>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-with,initial-scal=1">
   <link href="bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div style='width:75%;margin:0 auto;'>
<form class="form-inline" role="form" action="" method="get" style="margin-bottom:10px;">
    <div class="form-group">
        <input type="input" class="form-control" name="qun" id="qun" placeholder="请输入QQ群号码" value=""> <input name="sbmt" type="submit" class="btn btn-primary">
    </div>
</form>
<?php
    if(intval($_GET['qun'])>100000)
    {
        @mysql_connect("localhost", "root", "123456");
        @mysql_select_db("QQGroupInfo");
        mysql_query("set names utf8");
        $qun=intval($_GET['qun']);
        $sql="select * from QQGroupInfo.qunlist".CEIL($qun/1000000)." where QunNum=$qun";
        $rs=mysql_query($sql) or die(mysql_error());
        $r=mysql_fetch_assoc($rs);
        if($r)
        {
            echo "<table class='table table-striped table-bordered'>";
            echo "<tr><td colspan='10'>QQ群号:{$r['QunNum']}<br>\r\n";
            echo "QQ名称:{$r['Title']}<br>\r\n";
            echo "QQ简介:{$r['QunText']}<br>\r\n";

            $sql="select * from QQGroupDetail.group".CEIL($qun/100000)." where QunNum=$qun";
            $rs=mysql_query($sql) or die(mysql_error());
            echo "群 人 数:".mysql_num_rows($rs);
            echo "</td></tr><tr>";
            while($r=mysql_fetch_assoc($rs))
            {
                $i++;
                echo "<td align='center'><a href='?qq={$r['QQNum']}'>{$r['QQNum']}</a><br>{$r['Nick']}</td>";
                if($i%10==0) echo "</tr>\r\n\t<tr>";
            }
            echo "\t</tr>\r\n</table>";
        }
    }
    elseif(intval($_GET['qq'])>10000)
    {
        define('CLIENT_MULTI_RESULTS', 131072);//这两行是使用存储过程的关键地方
        @mysql_connect("localhost", "root", "123456",true,CLIENT_MULTI_RESULTS);
        @mysql_select_db("QQGroupDetail"); //数据库库名名
        mysql_query("set names utf8");
        $qq=intval($_GET['qq']);
        $rs=mysql_query("call SearchByQQ($qq);") or die(mysql_error());
        echo "<table class='table table-striped table-bordered table-hover'>";
        echo "<tr><td>QQ号码</td><td>昵称</td><td>群号码</td></tr>";
        while($r=mysql_fetch_assoc($rs))
        {
            echo "<tr><td>{$r['QQNum']}</td><td>{$r['nick']}</td><td><a href='?qun={$r['QunNum']}'>{$r['QunNum']}</a></td></tr>";
        }
        echo "</table>";

    }
?>
</div>
</body>
</html>

4.总结

在VPS上,在1100个表上查找QQ加入的QQ,大约需要20s,如果是SSD应该在几秒内。
尝试使用Sphinx全文索引,发现需要50多G……放弃了。
还有一种方法,空间换效率,提前把每个QQ号加入的群查出来放到一个表里。

相关文章:

  • 哇哈哈, 终于天上掉箱子了
  • WEB常用iptables规则
  • 我常用的Linux设置
  • 免安装Oracle客户端使用PL/SQL连接Linux Oracle 注意事项
  • CLI PHP WebSocket服务器
  • Nginx 自带防盗链模块
  • 在MTK中添加TASK与常用函数分析
  • 大数据时代必不可少的大数据分析和制作工具大全
  • SubVersion服务器Windows安装指南
  • CentOS里ifcfg的device指的是什么?
  • SQLServer2005批量查询自定义对象脚本
  • 使用Let's encrypt保护你的网络通信
  • SQLServer中求两个字符串的交集
  • 139说客的优势和局限性
  • phpjm php加密的解密过程
  • CentOS从零开始部署Nodejs项目
  • conda常用的命令
  • CSS魔法堂:Absolute Positioning就这个样
  • express + mock 让前后台并行开发
  • JavaScript设计模式之工厂模式
  • Laravel Telescope:优雅的应用调试工具
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • MQ框架的比较
  • mysql 5.6 原生Online DDL解析
  • Next.js之基础概念(二)
  • Shadow DOM 内部构造及如何构建独立组件
  • tweak 支持第三方库
  • 飞驰在Mesos的涡轮引擎上
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 跳前端坑前,先看看这个!!
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​学习一下,什么是预包装食品?​
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • ###C语言程序设计-----C语言学习(6)#
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #数学建模# 线性规划问题的Matlab求解
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (区间dp) (经典例题) 石子合并
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .axf 转化 .bin文件 的方法
  • .Net FrameWork总结
  • .NET 事件模型教程(二)