ホームページ  >  記事  >  データベース  >  mysql制限の高度な使用例

mysql制限の高度な使用例

黄舟
黄舟オリジナル
2017-02-06 15:39:111139ブラウズ

mysql 制限効率:

select `id`,`title`,`describle`,`created` from myvbga_table where click = xxx limit offset, limit; //总结:如果没有blob/text字段,单行记录比较小,可以把 limit 设大点,会加快速度。

limit offset 値が比較的小さい:

select `id`,`title`,`describle`,`created` from vbga_table limit 10,10 //多次运行,时间保持在0.0004-0.0005之间
Select `id`,`title`,`describle`,`created` From vbga_table Where click >=(Select click From vbga_table Order By click limit 10,1) limit 10 
//多次运行,时间保持在0.0005-0.0006之间,主要是0.0006

limit offset 値が比較的大きい:

select `id`,`title`,`describle`,`created` from vbga_table limit 10000,10 //多次运行,时间保持在0.0187左右
Select `id`,`title`,`describle`,`created` From vbga_table Where click >=(Select click From vbga_table Order By click limit 10000,1) limit 10

//複数回実行しても、時間は約 0.0061 のままで、前の 1/3 にすぎません。オフセットが大きいほど、後者の方が優れていると予想できます。

Mysql 制限の使用法:

LIMIT 句を使用して、SELECT ステートメントに指定された数のレコードを強制的に返すことができます

SELECT `id`,`title`,`describle`,`created` FROM vbga_table LIMIT [offset,] rows | rows OFFSET offset
mysql> SELECT `id`,`title`,`describle`,`created` FROM vbga_table LIMIT 5,10; // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行,
可以指定第二个参数为 -1:
mysql> SELECT `id`,`title`,`describle`,`created` FROM vbga_table LIMIT 95,-1; // 检索记录行 96-last. //如果只给定一个参数,它表示返回最大的记录行数目:
mysql> SELECT `id`,`title`,`describle`,`created` FROM vbga_table LIMIT 5; //检索前 5 个记录行 //换句话说,LIMIT n 等价于 LIMIT 0,n。


mysql 制限サブクエリの使用例:

select `id`,`title`,`describle`,`created` from vbga_table where id in (select t.id from (select `id`,`title`,`describle`,`created` from vbga_table limit 10)as t)

mysql 制限オフセットの使用例:

SELECT keyword FROM `zjoe_table` WHERE advertiserid='59' order by keyword LIMIT 2 OFFSET 1; //比如这个SQL ,limit后面跟的是2条数据,offset后面是从第1条开始读取

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~

SELECT `keyword` FROM `zjoe_table` WHERE Advertiserid='59' ORDER BY キーワード LIMIT 2,1; //そして、この SQL は、制限の後に始まります。 2番目の項目から読み出し、1つの情報を読み取ります。


mysqlストアドプロシージャでのlimit変数の使用

CREATE PROCEDURE Getble_table(_id int,_limit int)
BEGIN
PREPARE s1 FROM 'SELECT `id`,`title`,`describle`,`created` FROM ble_table WHERE Cityid=? ORDER BY sendtime DESC LIMIT ?';
set @a=_id;
set @b=_limit;
EXECUTE s1 USING @a,@b;
DEALLOCATE PREPARE s1;
END;


注: パラメータを渡す必要がある場合は「?」記号を使用する必要があり、最初の FRom の後のステートメントは '' で囲む必要があります。

上記は mysql の内容、制限、および高度な使用法です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。