日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL Server Indexes

發布時間:2024/10/12 数据库 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL Server Indexes 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Posted by scott on 2003年12月31日

Coveres the basics of indexes in SQL Server. Clustered versus non-clustered, composite, and unique indexes, as well as tips for chosing the columns and SQL to create, delete, and rename indexes.
Relational databases use indexes to find data quickly when a query is processed. Creating and removing indexes from a database schema will rarely result in changes to an application's code; indexes operate 'behind the scenes' in support of the database engine. However, creating the proper index can drastically increase the performance of an application.

A database engine uses a database index in much the same way a reader uses a book index. For example, one way to find all references to INSERT statements in a SQL book would be to begin on page one and scan each page of the book. We could mark each time we find the word INSERT until we reach the end of the book. This approach is pretty time consuming and laborious. Alternately, we can also use the index in the back of the book to find a page number for each occurrence of the INSERT statements. This approach produces the same results as above, but with tremendous savings in time.

When a database has no index to use for searching, the result is similar to the reader who looks at every page in a book to find a word: the database engine needs to visit every row in a table. In database terminology we call this behavior a table scan, or just scan.

A table scan is not always a problem, and is sometimes unavoidable. However, as a table grows to thousands of rows and then millions of rows and beyond, scans become correspondingly slower and more expensive.

Consider the following query on the Products table of the Northwind database. This query retrieves products in a specific price range.

SELECT ProductID, ProductName, UnitPriceFROM Products WHERE (UnitPrice > 12.5) AND (UnitPrice < 14)

There is currently no index on the Product table to help this query, so the database engine performs a scan and examines each record to see if UnitPrice falls between 12.5 and 14. In the diagram below, the database search touches a total of 77 records to find just three matches.


Now imagine if we created an index, just like a book index, on the data in the UnitPrice column. Each index entry would contain a copy of the UnitPrice value for a row, and a reference (just like a page number) to the row where the value originated. The database will sort these index entries into ascending order. The index will allow the database to quickly narrow in on the three rows to satisfy the query, and avoid scanning every row in the table.

Creating An Index

Having a data connection in the Server Explorer view of Visual Studio.NET allows us to easily create new indexes:

  • Navigate to the Products table of the Northwind database.
  • Right click the table and select Design Table from the context menu.
  • With the design screen in focus, click the Indexes/Keys item on the View menu of the IDE.

This should bring you to the following tabbed dialog box.

The dialog is currently displaying an existing index on the Products table: the PK_Products index. We will see later in this chapter how primary key fields are automatically indexed to enforce uniqueness in the key values.

  • In the above dialog click on the New button, and in the Index name text box, replace the existing entry with IDX_UnitPrice.
  • Beneath the text box is a control where we set the columns to index. Pull down the entry with ProductID and select the UnitPrice column instead.
  • Leave all of the other options with default settings.
  • Close the dialog and the table design view, making sure to save all of the changes when prompted to do so. The IDE will then issue the commands to create the new index.

We can create the same index using the following SQL. The command specifies the name of the index (IDX_UnitPrice), the table name (Products), and the column to index (UnitPrice).

CREATE INDEX [IDX_UnitPrice] ON Products (UnitPrice)

To verify that the index is created, use the following stored procedure to see a list of all indexes on the Products table:

EXEC sp_helpindex Customers

How It Works

The database takes the columns specified in a CREATE INDEX command and sorts the values into a special data structure known as a B-tree. A B-tree structure supports fast searches with a minimum amount of disk reads, allowing the database engine to quickly find the starting and stopping points for the query we are using.

Conceptually, we may think of an index as shown in the diagram below. On the left, each index entry contains the index key (UnitPrice). Each entry also includes a reference (which points) to the table rows which share that particular value and from which we can retrieve the required information.


Much like the index in the back of a book helps us to find keywords quickly, so the database is able to quickly narrow the number of records it must examine to a minimum by using the sorted list of UnitPrice values stored in the index. We have avoided a table scan to fetch the query results. Given this sketch of how indexes work, lets examine some of the scenarios where indexes offer a benefit.

Taking Advantage of Indexes

The database engine can use indexes to boost performance in a number of different queries. Sometimes these performance improvements are dramatic. An important feature of SQL Server 2000 is a component known as the query optimizer. The query optimizer's job is to find the fastest and least resource intensive means of executing incoming queries. An important part of this job is selecting the best index or indexes to perform the task. In the following sections we will examine the types of queries with the best chance of benefiting from an index.

Searching For Records

The most obvious use for an index is in finding a record or set of records matching a WHERE clause. Indexes can aid queries looking for values inside of a range (as we demonstrated earlier), as well as queries looking for a specific value. By way of example, the following queries can all benefit from an index on UnitPrice:

DELETE FROM Products WHERE UnitPrice = 1 UPDATE Products SET Discontinued = 1 WHERE UnitPrice > 15 SELECT * FROM PRODUCTS WHERE UnitPrice BETWEEN 14 AND 16

Indexes work just as well when searching for a record in DELETE and UPDATE commands as they do for SELECT statements.

Sorting Records

When we ask for a sorted dataset, the database will try to find an index and avoid sorting the results during execution of the query. We control sorting of a dataset by specifying a field, or fields, in an ORDER BY clause, with the sort order as ASC (ascending) or DESC (descending). For example, the following query returns all products sorted by price:

SELECT * FROM Products ORDER BY UnitPrice ASC

With no index, the database will scan the Products table and sort the rows to process the query. However, the index we created on UnitPrice (IDX_UnitPrice) earlier provides the database with a presorted list of prices. The database can simply scan the index from the first entry to the last entry and retrieve the rows in sorted order.

The same index works equally well with the following query, simply by scanning the index in reverse.

SELECT * FROM Products ORDER BY UnitPrice DESC

Grouping Records

We can use a GROUP BY clause to group records and aggregate values, for example, counting the number of orders placed by a customer. To process a query with a GROUP BY clause, the database will often sort the results on the columns included in the GROUP BY. The following query counts the number of products at each price by grouping together records with the same UnitPrice value.

SELECT Count(*), UnitPrice FROM Products GROUP BY UnitPrice

The database can use the IDX_UnitPrice index to retrieve the prices in order. Since matching prices appear in consecutive index entries, the database is able count the number of products at each price quickly. Indexing a field used in a GROUP BY clause can often speed up a query.

Maintaining a Unique Column

Columns requiring unique values (such as primary key columns) must have a unique index applied. There are several methods available to create a unique index. Marking a column as a primary key will automatically create a unique index on the column. We can also create a unique index by checking the Create UNIQUE checkbox in the dialog shown earlier. The screen shot of the dialog displayed the index used to enforce the primary key of the Products table. In this case, the Create UNIQUE checkbox is disabled, since an index to enforce a primary key must be a unique index. However, creating new indexes not used to enforce primary keys will allow us to select the Create UNIQUE checkbox. We can also create a unique index using SQL with the following command:

CREATE UNIQUE INDEX IDX_ProductName On Products (ProductName)

The above SQL command will not allow any duplicate values in the ProductName column, and an index is the best tool for the database to use to enforce this rule. Each time an application adds or modifies a row in the table, the database needs to search all existing records to ensure none of values in the new data duplicate existing values. Indexes, as we should know by now, will improve this search time.

Index Drawbacks

There are tradeoffs to almost any feature in computer programming, and indexes are no exception. While indexes provide a substantial performance benefit to searches, there is also a downside to indexing. Let's talk about some of those drawbacks now.

Indexes and Disk Space

Indexes are stored on the disk, and the amount of space required will depend on the size of the table, and the number and types of columns used in the index. Disk space is generally cheap enough to trade for application performance, particularly when a database serves a large number of users. To see the space required for a table, use the sp_spaceused system stored procedure in a query window.

EXEC sp_spaceused Orders

Given a table name (Orders), the procedure will return the amount of space used by the data and all indexes associated with the table, like so:

Name rows reserved data index_size unused ------- -------- ----------- ------ ---------- ------- Orders 830 504 KB 160 KB 320 KB 24 KB

According to the output above, the table data uses 160 kilobytes, while the table indexes use twice as much, or 320 kilobytes. The ratio of index size to table size can vary greatly, depending on the columns, data types, and number of indexes on a table.

Indexes and Data Modification

Another downside to using an index is the performance implication on data modification statements. Any time a query modifies the data in a table (INSERT, UPDATE, or DELETE), the database needs to update all of the indexes where data has changed. As we discussed earlier, indexing can help the database during data modification statements by allowing the database to quickly locate the records to modify, however, we now caveat the discussion with the understanding that providing too many indexes to update can actually hurt the performance of data modifications. This leads to a delicate balancing act when tuning the database for performance.

In decision support systems and data warehouses, where information is stored for reporting purposes, data remains relatively static and report generating queries outnumber data modification queries. In these types of environments, heavy indexing is commonplace in order to optimize the reports generated. In contrast, a database used for transaction processing will see many records added and updated. These types of databases will use fewer indexes to allow for higher throughput on inserts and updates.

Every application is unique, and finding the best indexes to use for a specific application usually requires some help from the optimization tools offered by many database vendors. SQL Server 2000 and Access include the Profiler and Index Tuning Wizard tools to help tweak performance.

Now we have enough information to understand why indexes are useful and where indexes are best applied. It is time now to look at the different options available when creating an index and then address some common rules of thumb to use when planning the indexes for your database.

Clustered Indexes

Earlier in the article we made an analogy between a database index and the index of a book. A book index stores words in order with a reference to the page numbers where the word is located. This type of index for a database is a nonclustered index; only the index key and a reference are stored. In contrast, a common analogy for a clustered index is a phone book. A phone book still sorts entries into alphabetical order. The difference is, once we find a name in a phone book, we have immediate access to the rest of the data for the name, such as the phone number and address.

For a clustered index, the database will sort the table's records according to the column (or columns) specified by the index. A clustered index contains all of the data for a table in the index, sorted by the index key, just like a phone book is sorted by name and contains all of the information for the person inline. The nonclustered indexes created earlier in the chapter contain only the index key and a reference to find the data, which is more like a book index. You can only create one clustered index on each table.

In the diagram below we have a search using a clustered index on the UnitPrice column of the Products table. Compare this diagram to the previous diagram with a regular index on UnitPrice. Although we are only showing three columns from the Products table, all of the columns are present and notice the rows are sorted into the order of the index, there is no reference to follow from the index back to the data.


A clustered index is the most important index you can apply to a table. If the database engine can use a clustered index during a query, the database does not need to follow references back to the rest of\ the data, as happens with a nonclustered index. The result is less work for the database, and consequently, better performance for a query using a clustered index.

To create a clustered index, simply select the Create As CLUSTERED checkbox in the dialog box we used at the beginning of the chapter. The SQL syntax for a clustered index simply adds a new keyword to the CREATE INDEX command, as shown below:

CREATE CLUSTERED INDEX IDX_SupplierID ON Products(SupplierID)

Most of the tables in the Northwind database already have a clustered index defined on a table. Since we can only have one clustered index per table, and the Products table already has a clustered index (PK_Products) on the primary key (ProductId), the above command should generate the following error:

Cannot create more than one clustered index on table 'Products'. Drop the existing clustered index 'PK_Products' before creating another.

As a general rule of thumb, every table should have a clustered index. If you create only one index for a table, use a clustered index. Not only is a clustered index more efficient than other indexes for retrieval operations, a clustered index also helps the database efficiently manage the space required to store the table. In SQL Server, creating a primary key constraint will automatically create a clustered index (if none exists) using the primary key column as the index key.

Sometimes it is better to use a unique nonclustered index on the primary key column, and place the clustered index on a column used by more queries. For example, if the majority of searches are for the price of a product instead of the primary key of a product, the clustered index could be more effective if used on the price field. A clustered index can also be a UNIQUE index.

A Disadvantage to Clustered Indexes

If we update a record and change the value of an indexed column in a clustered index, the database might need to move the entire row into a new position to keep the rows in sorted order. This behavior essentially turns an update query into a DELETE followed by an INSERT, with an obvious decrease in performance. A table's clustered index can often be found on the primary key or a foreign key column, because key values generally do not change once a record is inserted into the database.

Composite Indexes

A composite index is an index on two or more columns. Both clustered and nonclustered indexes can be composite indexes. Composite indexes are especially useful in two different circumstances. First, you can use a composite index to cover a query. Secondly, you can use a composite index to help match the search criteria of specific queries. We will go onto more detail and give examples of these two areas in the following sections.

Covering Queries with an Index

Earlier in the article we discussed how an index, specifically a nonclustered index, contains only the key values and a reference to find the associated row of data. However, if the key value contains all of the information needed to process a query, the database never has to follow the reference and find the row; it can simply retrieve the information from the index and save processing time. This is always a benefit for clustered indexes.

As an example, consider the index we created on the Products table for UnitPrice. The database copied the values from the UnitPrice column and sorted them into an index. If we execute the following query, the database can retrieve all of the information for the query from the index itself.

SELECT UnitPrice FROM Products ORDER BY UnitPrice

We call these types of queries covered queries, because all of the columns requested in the output are contained in the index itself. A clustered index, if selected for use by the query optimizer, always covers a query, since it contains all of the data in a table.

For the following query, there are no covering indexes on the Products table.

SELECT ProductName, UnitPrice FROM Products ORDER BY UnitPrice

This is because although the database will use the index on UnitPrice to avoid sorting records, it will need to follow the reference in each index entry to find the associated row and retrieve the product name. By creating a composite index on two columns (ProductName and UnitPrice), we can cover this query with the new index.

Matching Complex Search Criteria

For another way to use composite indexes, let's take a look at the OrderDetails table of Northwind. There are two key values in the table (OrderID and ProductID); these are foreign keys, referencing the Orders and Products tables respectively. There is no column dedicated for use as a primary key; instead, the primary key is the combination of the columns OrderID and ProductID.

The primary key constraint on these columns will generate a composite index, which is unique of course. The command the database would use to create the index looks something like the following:

CREATE UNIQUE CLUSTERED INDEX PK_Order_Details ON [Order Details] (OrderID, ProductID)

The order in which columns appear in a CREATE INDEX statement is significant. The primary sort order for this index is OrderID. When the OrderID is the same for two or more records, the database will sort this subset of records on ProductID.

The order of columns determines how useful the index is for a query. Consider the phone book sorted by last name then first name. The phone book makes it easy to find all of the listings with a last name of Smith, or all of the listings with a last name of Jones and a first name of Lisa, but it is difficult to find all listings with a first name of Gary without scanning the book page by page.

Likewise, the composite index on Order Details is useful in the following two queries:

SELECT * FROM [Order Details] WHERE OrderID = 11077 SELECT * FROM [Order Details] WHERE OrderID = 11077 AND ProductID = 13

However, the following query cannot take advantage of the index we created since ProductID is the second part of the index key, just like the first name field in a phone book.

SELECT * FROM [Order Details] WHERE ProductID = 13

In this case, ProductID is a primary key, however, so an index does exist on the ProductID column for the database to use for this query.

Suppose the following query is the most popular query executed by our application, and we decided we needed to tune the database to support it.

SELECT ProductName, UnitPrice FROM Products ORDER BY UnitPrice

We could create the following index to cover the query. Notice we have specified two columns for the index: UnitPrice and ProductName (making the index a composite index):

CREATE INDEX IX_UnitPrice_ProductName ON Products(UnitPrice, ProductName)

While covered queries can provide a performance benefit, remember there is a price to pay for each index we add to a table, and we can also never cover every query in a non-trivial application.

Additional Index Guidelines

Choosing the correct columns and types for an index is another important step in creating an effective index. In this section, we will talk about two main points, namely short index keys and selective indexes (we'll explain what selective indexes are in just a moment).

Keep Index Keys Short

The larger an index key is, the harder a database has to work to use the index. For instance, an integer key is smaller in size then a character field for holding 100 characters. In particular, keep clustered indexes as short as possible.

There are several approaches to keeping an index key short. First, try to limit the index to as few columns as possible. While composite indexes are useful and can sometimes optimize a query, they are also larger and cause more disk reads for the database. Secondly, try to choose a compact data type for an index column, based on the number of bytes required for each data type. Integer keys are small and easy for the database to compare. In contrast, strings require a character-by-character comparison.

As a rule of thumb, try to avoid using character columns in an index, particularly primary key indexes. Integer columns will always have an advantage over character fields in ability to boost the performance of a query.

Distinct Index Keys

The most effective indexes are the indexes with a small percentage of duplicated values. Think of having a phone book for a city where 75% of the population has the last name of Smith. A phone book in this area might be easier to use if the entries were sorted by the resident's first names instead. A good index will allow the database to disregard as many records as possible during a search.

An index with a high percentage of unique values is a selective index. Obviously, a unique index is the most selective index of all, because there are no duplicate values. SQL Server will track statistics for indexes and will know how selective each index is. The query optimizer utilizes these statistics when selecting the best index to use for a query.

Maintaining Indexes

In addition to creating an index, we'll need to view existing indexes, and sometimes delete or rename them. This is part of the ongoing maintenance cycle of a database as the schema changes, or even naming conventions change.

View Existing Indexes

A list of all indexes on a table is available in the dialog box we used to create an index. Click on the Selected index drop down control and scroll through the available indexes.

There is also a stored procedure named sp_helpindex. This stored procedure gives all of the indexes for a table, along with all of the relevant attributes. The only input parameter to the procedure is the name of the table, as shown below.

EXEC sp_helpindex Customers

Rename an Index

We can also rename any user created object with the sp_rename stored procedure, including indexes. The sp_rename procedure takes, at a minimum, the current name of the object and the new name for the object. For indexes, the current name must include the name of the table, a dot separator, and the name of the index, as shown below:

EXEC sp_rename 'Products.IX_UnitPrice', 'IX_Price'

This will change the name of the IX_UnitPrice index to IX_Price.

Delete an Index

It is a good idea to remove an index from the database if the index is not providing any benefit. For instance, if we know the queries in an application are no longer searching for records on a particular column, we can remove the index. Unneeded indexes only take up storage space and diminish the performance of modifications. You can remove most indexes with the Delete button on the index dialog box, which we saw earlier. The equivalent SQL command is shown below.

DROP Index Products.IX_Price

Again, we need to use the name of the table and the name of the index, with a dot separator. Some indexes are not so easy to drop, namely any index supporting a unique or primary key constraint. For example, the following command tries to drop the PK_Products index of the Products table.

DROP INDEX Products.PK_Products

Since the database uses PK_Products to enforce a primary key constraint on the Products table, the above command should produce the following error.

An explicit DROP INDEX is not allowed on index 'Products.PK_Products'. It is being used for PRIMARY KEY constraint enforcement.

Removing a primary key constraint from a table is a redesign of the table, and requires careful thought. It makes sense to know the only way to achieve this task is to either drop the table and use a CREATE TABLE command to recreate the table without the index, or to use the ALTER TABLE command.

Conclusion

In this article we learned how to create, manage, and select indexes for SQL Server tables. Most of what we covered is true for any relational database engine. Proper indexes are crucial for good performance in large databases. Sometimes you can make up for a poorly written query with a good index, but it can be hard to make up for poor indexing with even the best queries.

轉載于:https://www.cnblogs.com/Stephen/archive/2004/05/02/8261.html

總結

以上是生活随笔為你收集整理的SQL Server Indexes的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久精品中文字幕免费mv | www成人av | 最新国产福利 | 狠狠色伊人亚洲综合网站野外 | 久久在线播放 | 日韩欧美精品在线观看 | 国产69久久久欧美一级 | 国产91av视频在线观看 | 欧美人交a欧美精品 | 91麻豆免费看 | 在线中文字幕网站 | 亚洲日韩中文字幕在线播放 | 欧美精品九九99久久 | 国产又粗又猛又黄又爽的视频 | 91精品在线观看入口 | 黄色免费观看视频 | 国产精品久久久久永久免费看 | av网址在线播放 | 91精品国产91久久久久 | 18国产精品白浆在线观看免费 | 91麻豆产精品久久久久久 | 午夜精品久久久久久99热明星 | 日日夜夜天天 | 一区二区三区四区免费视频 | 久久久久区 | 国产高清在线免费观看 | 亚洲三级毛片 | 国产一级大片免费看 | 亚洲涩涩网 | 精品国内| 极品美女被弄高潮视频网站 | 欧美黄色软件 | 国产福利久久 | 日本中文字幕观看 | www91在线观看| 中文字幕视频一区二区 | 中文字幕资源网 | 欧美性色黄大片在线观看 | 美女网站黄在线观看 | 黄在线免费看 | 黄色一级性片 | 久久久久国产精品午夜一区 | 国产一区观看 | 国产视频 亚洲精品 | 99久久久国产精品 | 婷婷精品视频 | 天天天天天天干 | 婷婷深爱激情 | 2019中文字幕网站 | 天天狠狠操| 日韩中文在线视频 | 中文字幕丰满人伦在线 | 中文字幕av免费 | 69av国产| 天天操天天干天天综合网 | 中文字幕不卡在线88 | 97在线精品| 久久99精品久久久久久久久久久久 | ww视频在线观看 | 欧美久久电影 | 黄色影院在线观看 | 国产精品精品视频 | 色偷偷88欧美精品久久久 | 亚洲九九| 日韩视频 一区 | 日韩二区在线 | 国产美腿白丝袜足在线av | 久久精品一 | 国产精品女同一区二区三区久久夜 | 欧美精品在线观看 | 国产亚洲无| 欧美大jb| 婷婷丁香五| 成人久久久精品国产乱码一区二区 | 蜜桃视频精品 | 天天射天天操天天干 | 日韩一区二区三区免费电影 | 日韩午夜精品 | 欧美精品乱码99久久影院 | 国产又粗又猛又黄又爽的视频 | 国产精品一区二区你懂的 | 夜夜摸夜夜爽 | 91桃色在线播放 | 国产午夜影院 | 免费久久网站 | 狠狠ri| 国产五月色婷婷六月丁香视频 | av中文字幕在线播放 | 国产色在线,com | av电影免费观看 | 麻豆91在线播放 | 婷婷伊人五月天 | 九九九九热精品免费视频点播观看 | 日批网站免费观看 | 日韩久久久久久久久 | 麻豆国产露脸在线观看 | 日韩精品一区二区三区在线播放 | 香蕉视频国产在线 | 国产精品久久中文字幕 | av在线观 | 日韩免费观看一区二区 | adc在线观看 | 91伊人| 日韩在线中文字幕 | x99av成人免费 | 午夜视频一区二区三区 | 免费观看一区二区三区视频 | 国内精品久久久久影院日本资源 | 国产自产在线视频 | 久久国产精品99久久久久久老狼 | 免费久久99精品国产婷婷六月 | 成人免费视频播放 | 久久中文字幕视频 | 精品视频免费观看 | 97人人添人澡人人爽超碰动图 | 国产欧美精品xxxx另类 | 免费av大全 | 久久综合五月天婷婷伊人 | 国产在线理论片 | 国产精品99久久久久 | 日本爱爱免费 | 国产看片免费 | 色偷偷中文字幕 | 99中文字幕视频 | 久久天天躁夜夜躁狠狠躁2022 | 五月导航| 成人av电影在线观看 | 日韩黄色中文字幕 | 久久一区精品 | 91最新网址在线观看 | 一区二区国产精品 | 国产亚洲观看 | 天天干天天操天天干 | 黄色软件视频网站 | 五月天狠狠操 | 日韩免费在线看 | 久久亚洲综合国产精品99麻豆的功能介绍 | 国产精品99精品 | 亚洲国产成人在线播放 | 久黄色| 国色天香永久免费 | 中文字幕在线观看一区二区三区 | 久久国产电影 | 黄色一级大片在线免费看国产一 | 又黄又刺激视频 | 日韩av片免费在线观看 | 亚洲视频在线观看网站 | 2018亚洲男人天堂 | 日韩中文字幕91 | 婷婷五情天综123 | 国产精品成人久久久久久久 | 在线精品视频免费观看 | 久久av影视 | 三级黄色片在线观看 | 婷婷在线免费视频 | 国产精品av在线 | 成人黄色资源 | 婷婷激情五月综合 | 日韩欧美黄色网址 | 麻豆国产精品永久免费视频 | 亚洲国产欧美在线人成大黄瓜 | 狠狠狠狠狠狠天天爱 | 在线观看一级 | 国产精品久久久久久久久久 | 日韩av电影中文字幕在线观看 | 亚洲精品一区中文字幕乱码 | 91精品视频观看 | 中文字幕欧美日韩va免费视频 | 日韩成人精品在线观看 | 亚洲欧美日韩精品久久久 | 啪啪资源 | 二区三区毛片 | 黄色片网站免费 | 99精品亚洲| 亚洲精选视频免费看 | 日韩电影一区二区三区 | 精品欧美一区二区精品久久 | 久久精品91视频 | 国产无套一区二区三区久久 | 天天插日日插 | 久久久久久久久福利 | 成人免费视频免费观看 | 欧美日本啪啪无遮挡网站 | 色在线观看网站 | 激情欧美一区二区三区 | 欧美性色网站 | 成人动漫精品一区二区 | 亚洲人久久久 | 伊人成人激情 | 亚洲成年人在线播放 | 中文字幕一二 | 毛片888 | 天天干天天干天天射 | 中文字幕色在线视频 | 欧美福利在线播放 | 成人毛片在线视频 | 国产超碰在线 | 天天摸天天操天天爽 | 国产精品久久久久久久久久久不卡 | 久久午夜羞羞影院 | 国产精品国产三级国产aⅴ9色 | 青青河边草免费视频 | 麻豆传媒电影在线观看 | 一级片免费观看 | 美女av免费看 | 国产亚洲视频在线观看 | 国产精品麻豆免费版 | 亚洲视频精选 | 中文字幕在线观看三区 | 色天天天| 精品国产一区二区三区免费 | 中文字幕观看av | 国产精品久久嫩一区二区免费 | 在线免费观看视频你懂的 | 激情五月综合 | 天天射综合 | 国产一区二区免费在线观看 | av资源网在线播放 | 亚洲人xxx | 天天草视频| 国产精品亚州 | 中文有码在线 | 国产高清免费在线观看 | 日本不卡一区二区 | 中文字幕中文字幕在线中文字幕三区 | 超碰在线国产 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 亚洲伦理一区二区 | 精品在线一区二区 | 国产麻豆剧传媒免费观看 | 国产精品成人一区二区三区吃奶 | 国产激情小视频在线观看 | 国内99视频 | 免费在线黄色av | 亚洲国产精品电影在线观看 | 日日噜噜噜噜夜夜爽亚洲精品 | 天天综合成人 | 成人理论在线观看 | 九色视频网 | 久久精品一级片 | 人人草人| 蜜臀久久99精品久久久无需会员 | 国产视频黄 | 亚洲欧洲精品一区二区精品久久久 | 欧美日本中文字幕 | 国产理论片在线观看 | 成人a在线 | 一区二区三区在线不卡 | 久久伊人五月天 | 99视频一区二区 | 91成人精品一区在线播放69 | 午夜av电影| 91九色视频在线 | 日本黄色黄网站 | 欧美成人精品欧美一级乱 | 日日夜夜噜噜噜 | 国产亚洲一级高清 | 91在线入口 | 日本高清dvd | 日韩激情视频在线观看 | 国产在线91精品 | 欧美日本国产在线观看 | 欧美一级日韩三级 | 亚洲在线免费视频 | 婷婷色网视频在线播放 | 国产精品白浆 | 精品999在线观看 | 国产精品入口麻豆www | 91日本在线播放 | 久久中文视频 | 亚洲黄色免费网站 | 欧美aa一级片 | 国产玖玖精品视频 | av免费在线观看网站 | 91最新在线观看 | 人人干免费 | 91精品视频播放 | 97av影院 | 日韩精品欧美专区 | av中文字幕在线播放 | a级一a一级在线观看 | 色婷婷骚婷婷 | 夜夜操狠狠干 | www色网站| 免费日韩 精品中文字幕视频在线 | 国产中文字幕第一页 | 国产精品九九视频 | 在线电影播放 | 99色人| 国产午夜麻豆影院在线观看 | www.69xx| 天天av综合网 | 亚洲精品国 | 国产精品k频道 | 国产午夜精品一区 | 国产午夜三级一二三区 | 成人97人人超碰人人99 | 成人cosplay福利网站 | 麻豆传媒视频在线播放 | 国产亚洲欧美在线视频 | 欧美性网站| 视频国产在线观看18 | 美女久久99 | 日韩xxxx视频| 国产精品免费一区二区三区在线观看 | 成在人线av | 国产精品s色 | 欧美久久久久久久久久 | 99久久精品国产免费看不卡 | 国产精品 中文字幕 亚洲 欧美 | 97成人免费视频 | 欧美韩国日本在线观看 | 少妇bbbb搡bbbb搡bbbb | 夜夜视频资源 | 五月天中文在线 | 久久久久女人精品毛片九一 | 久要激情网 | 亚洲aⅴ在线 | 国产麻豆果冻传媒在线观看 | 在线午夜 | 日韩精品视频免费看 | 欧美性黑人| 亚洲国产三级在线 | 国产又粗又猛又爽又黄的视频免费 | 久久黄色片子 | 中文字幕在线播放一区二区 | 国产精品国产三级国产aⅴ无密码 | 九九视频这里只有精品 | 91视频免费观看 | 中文字幕国产 | 蜜桃视频在线视频 | 一区二区三区四区五区在线 | 日产中文字幕 | 碰超人人 | 成人在线观看网址 | 国产成人精品综合久久久久99 | 99爱在线观看| 久久精品专区 | 免费在线观看日韩 | 成人免费观看视频大全 | 久9在线| 欧美做受高潮电影o | 亚洲最新在线视频 | 国产精品精品国产婷婷这里av | 天天色 天天 | 久久久久久久久久久综合 | 欧美久久久久久久久久久久久 | 久久国产视频网站 | 亚洲视频专区在线 | 成人亚洲免费 | 激情视频91 | 日韩电影在线观看中文字幕 | 久久视频网址 | 久久九九影院 | 美女一二三区 | 久久精品成人热国产成 | 中国精品少妇 | 国产精品女人久久久 | 99视频一区| 国产精在线 | 最近中文字幕免费观看 | 久久久国产一区二区 | 亚洲日本国产精品 | 欧美日韩久 | 天堂av免费| 久久精品国产免费看久久精品 | 国产区网址 | 五月婷婷狠狠 | 日韩色av色资源 | www久久 | 香蕉网址| 国产亚州精品视频 | 久久综合偷偷噜噜噜色 | av导航福利 | 干综合网 | 日韩av看片| 天天爽天天做 | 九九久久久久久久久激情 | 国产精品久久一区二区三区不卡 | 婷婷丁香在线观看 | 黄色91免费观看 | 国产在线观看a | 夜夜高潮夜夜爽国产伦精品 | 麻豆国产精品永久免费视频 | 婷婷综合导航 | 久久久免费看视频 | 成人久久毛片 | 视频国产区 | 免费在线观看黄网站 | 久久久久久久久爱 | 久草视频在线新免费 | 国产精品久久一区二区无卡 | 久久99九九99精品 | 国产精品久久久久av免费 | 久久草网站 | 亚洲精品视频在线看 | 一区三区视频在线观看 | 国产精品美女免费 | 999在线精品 | 欧美一区二区三区不卡 | 日韩精品一区二区三区免费视频观看 | 波多野结衣精品 | 精品久久久久久亚洲综合网站 | 97成人精品| 91精品区| 久久手机在线视频 | 国产黄色片免费观看 | 在线国产片 | 天海翼一区二区三区免费 | 免费能看的黄色片 | 久草在线网址 | 久久影院中文字幕 | 欧美日韩在线观看不卡 | 色干干 | 午夜精品一区二区三区免费视频 | 欧美日韩国产亚洲乱码字幕 | 手机av电影在线 | 国产高清中文字幕 | 国产精品黄色av | 五月天免费网站 | 91精品啪 | 久草资源在线 | 久草在线视频中文 | 久久免费视频4 | 国产精品久久一区二区三区, | 美女网站在线免费观看 | 久久精品久久99精品久久 | 日韩免费一区二区 | 黄色特一级 | 特级西西444www高清大视频 | 精品久久亚洲 | 久久久久久久久久久影视 | 免费影视大全推荐 | 五月婷婷另类国产 | 99热在线这里只有精品 | 天天草天天操 | 国产精品毛片一区视频播 | 国产精品a久久久久 | 精品国产一区二区三区久久久蜜臀 | 色欲综合视频天天天 | 91热爆视频 | 午夜成人免费电影 | 精品亚洲成人 | 黄色成人av | 在线日韩中文 | 免费日韩高清 | av成人免费网站 | 91经典在线| 国产精在线| 久草视频在线免费播放 | 在线免费观看一区二区三区 | 亚洲视频免费视频 | 色播激情五月 | 国产一在线精品一区在线观看 | 欧美精品乱码久久久久久 | 国产专区免费 | 国产第页 | 久久久综合电影 | 精品一区免费 | 操操操日日日干干干 | 色综合国产 | 一区二区三区在线视频111 | 这里只有精彩视频 | 伊在线视频 | 久久区二区 | 欧美日本不卡高清 | 日本黄区免费视频观看 | 亚洲国产成人在线播放 | 九九久久久久99精品 | 色偷偷中文字幕 | 成人a免费视频 | 可以免费观看的av片 | 夜夜操综合网 | 最近最新mv字幕免费观看 | 久久久www成人免费毛片麻豆 | 91免费观看网站 | 狠狠狠色 | 青青射 | 国产国语在线 | 亚洲最大av | 免费av在线网站 | 天天干一干 | 久久人网| 国产黄色片久久久 | 亚洲欧美国产精品18p | 99精品视频一区二区 | 国产在线色 | 亚洲精品在线视频观看 | 亚洲天堂免费视频 | 人人干网 | 久久国产亚洲精品 | 久久婷婷精品视频 | 99这里只有 | 看av免费| 久久久久久久99 | 亚洲乱码国产乱码精品天美传媒 | 亚洲免费精品一区二区 | 91网在线看 | 中文日韩在线视频 | www九九热 | 久久久久国产免费免费 | 国产在线观看污片 | 九九热免费观看 | 91久久在线观看 | 婷婷六月中文字幕 | 在线午夜av | 波多在线视频 | 天天操天天射天天操 | 视频高清| 蜜臀av麻豆 | 精品视频成人 | 99日精品| 国产精品第10页 | 在线免费av播放 | 日韩精品一区二区三区在线播放 | 手机在线看永久av片免费 | 婷婷九九 | 久久精品99国产国产 | 日本特黄一级 | 在线91色 | 激情av在线播放 | www.五月天激情 | 久久久九色精品国产一区二区三区 | 深爱激情婷婷网 | 国产精品 日韩精品 | 久久久久久久久毛片精品 | 亚洲一区二区视频在线播放 | 国产成人精品电影久久久 | 黄色小说在线观看视频 | 九九热视频在线 | 国产精品婷婷午夜在线观看 | 在线免费观看国产精品 | 色姑娘综合天天 | 亚洲欧美日韩国产一区二区 | 国产999精品久久久久久绿帽 | 91在线视频观看免费 | 操操操人人人 | 久久伦理影院 | 国产成人亚洲在线观看 | 精品国产伦一区二区三区免费 | 久久精品爱爱视频 | 日韩爱爱片| 九九免费在线观看视频 | 日日干夜夜操视频 | 在线看国产日韩 | 国产高清av免费在线观看 | 国产一二三区av | 国产精品99久久久久久武松影视 | 日韩欧美视频免费在线观看 | 久久婷婷国产色一区二区三区 | 国产精品尤物视频 | 亚洲蜜桃av | 国产黄色片网站 | 久久久久久久免费观看 | 337p日本欧洲亚洲大胆裸体艺术 | 黄色软件在线看 | 国产精品96久久久久久吹潮 | 天天草天天干天天 | 91成人精品一区在线播放69 | 精品一区电影 | 69国产成人综合久久精品欧美 | 色天堂在线视频 | 久久国产亚洲 | 天堂va在线高清一区 | 久草香蕉在线 | 国产1级视频 | 日韩欧美在线综合网 | 中文字幕中文字幕在线中文字幕三区 | 久久黄色小说 | 天天色.com | 在线只有精品 | 欧美日韩亚洲国产一区 | 欧美一区二视频在线免费观看 | 色婷婷www | 一区二区三区动漫 | 国产亚洲视频在线 | 久久永久免费 | 午夜成人影视 | 欧美日韩国内在线 | 国产免费a | 精壮的侍卫呻吟h | 不卡的av | 91精品久久久久久粉嫩 | 午夜.dj高清免费观看视频 | 麻豆系列在线观看 | 香蕉视频在线视频 | 国产精品黑丝在线观看 | 99精品在这里| 66av99精品福利视频在线 | 国产精品久久久久国产精品日日 | 国产黄色av影视 | 99精品久久久久久久 | 久久99热这里只有精品国产 | 91在线观 | 国产一区视频免费在线观看 | 亚洲乱码中文字幕综合 | 精品999| 亚洲情婷婷 | 91手机视频 | 婷婷色六月天 | 成人a毛片 | 成人av片免费看 | 91精品老司机久久一区啪 | 狠狠干夜夜操天天爽 | 伊人五月天.com | 激情欧美丁香 | 国产日韩欧美视频在线观看 | 69性欧美| 日日夜夜天天射 | 亚洲精品视频网站在线观看 | 毛片1000部免费看 | 91激情小视频 | 亚洲一区久久 | 成人黄色大片网站 | 精品在线一区二区 | 国产日韩欧美在线观看 | 成人精品视频久久久久 | 国产韩国日本高清视频 | 成人免费在线视频观看 | 国产精品99久久久久久小说 | 麻豆成人小视频 | 亚洲九九九 | 色多多污污 | 特及黄色片 | 国产毛片久久久 | 91麻豆精品国产91久久久久 | 欧美国产一区二区 | 中文字幕在线观看免费高清完整版 | 在线免费观看成人 | 久久1电影院 | 国产亚洲91 | 国产精品三级视频 | 国产亚洲综合性久久久影院 | 黄色日视频 | 欧美国产日韩一区 | 免费看片网址 | 美女av电影 | 中文字幕在线观看的网站 | 国产69精品久久99不卡的观看体验 | 日韩av影视在线观看 | 日韩午夜剧场 | 男女免费av | 亚洲成av人片在线观看www | 亚洲 欧洲 国产 日本 综合 | 成人av资源 | 中文字幕一区二区三区久久蜜桃 | 国产无区一区二区三麻豆 | 久久综合色8888 | 国产精品18久久久久白浆 | 国产精品电影一区 | 97色国产| 国产精品3区| 午夜精品久久久久久久99 | 一区二区视频电影在线观看 | 天天操夜夜操国产精品 | 国产涩涩在线观看 | 欧美成人区 | 欧美日韩国产精品一区二区 | 成人一区不卡 | 激情网五月婷婷 | 成人国产精品一区二区 | 国产福利免费在线观看 | 亚洲日本韩国一区二区 | 国产黄在线 | 国产中文字幕免费 | 天天搞夜夜骑 | 9ⅰ精品久久久久久久久中文字幕 | 国产视频综合在线 | 久久亚洲免费视频 | 天天操月月操 | 久久五月婷婷丁香 | 一区二区三区不卡在线 | 国产麻豆电影 | 99精品欧美一区二区蜜桃免费 | 久草网在线视频 | 国产精品一区久久久久 | 国产精品毛片一区二区在线看 | 久久精品牌麻豆国产大山 | 亚洲高清在线精品 | 亚洲九九九在线观看 | 在线免费观看不卡av | 色多多视频在线观看 | 国产一二区免费视频 | 99精品国产一区二区三区不卡 | 成人av影视观看 | 精品视频一区在线观看 | 美女又爽又黄 | 色偷偷av男人天堂 | 成人在线观看网址 | 青草视频在线 | 久久欧美视频 | 亚洲成人精品影院 | 久久精品中文 | 99久久99久国产黄毛片 | 日韩视频1区 | 在线观看日本高清mv视频 | 六月色丁 | 日韩精品在线免费播放 | 免费人成在线观看网站 | 国产亚洲一区二区三区 | 久久伊人操 | 在线观看精品黄av片免费 | 亚洲va欧洲va国产va不卡 | 超碰免费成人 | 日韩在线观看不卡 | 午夜精品一二三区 | 久久久不卡影院 | 国产又粗又猛又色 | 婷婷在线五月 | 日本电影久久 | 91免费在线| 成人理论电影 | 亚洲天堂精品视频 | a成人v在线 | 日韩黄色免费在线观看 | 在线免费成人 | 婷婷综合五月天 | 在线免费av观看 | 成年人黄色在线观看 | 五月婷婷视频在线 | 日韩在线观看视频免费 | 日本精品视频一区二区 | 成人一区在线观看 | 综合激情网... | 99久久久国产精品免费99 | 久草网视频在线观看 | 超碰97免费在线 | 手机在线日韩视频 | 一区二区三区免费在线观看视频 | 黄色大片中国 | 九色91在线视频 | 欧美亚洲精品一区 | 91av在线免费播放 | 日本精品一二区 | 中文字幕韩在线第一页 | av短片在线观看 | 一区二区精 | 久久看毛片 | 天天射天天干天天 | 综合久久网 | 久久五月婷婷综合 | 国产最新在线视频 | 久久国产美女视频 | 99在线视频精品 | 久久精品999 | av专区在线| 男女激情免费网站 | 国产精品一区二区吃奶在线观看 | 精品视频免费观看 | 亚洲综合最新在线 | 91高清免费观看 | 久久草草热国产精品直播 | 99精品欧美一区二区三区黑人哦 | 国产成年免费视频 | 国产精品爽爽久久久久久蜜臀 | 国产成人av福利 | a视频在线看| 国产精品影音先锋 | 麻豆视频在线免费看 | 91av电影在线 | 精品久久影院 | 干干夜夜 | 日韩电影中文字幕在线观看 | 精品免费视频. | av亚洲产国偷v产偷v自拍小说 | 在线天堂中文www视软件 | 亚洲视频在线视频 | 2024国产精品视频 | 日韩在线视频免费看 | 免费av在| 噜噜色官网 | 一区二区三区日韩在线观看 | 国产91在线观 | a视频在线观看免费 | 中文字幕一区二区三区四区视频 | 精品九九久久 | 狠狠色丁香婷婷综合久小说久 | 亚洲成人欧美 | 国产精品九九九九九 | 色视频网站在线 | 九七视频在线观看 | 999国内精品永久免费视频 | 新av在线| a在线v | 亚洲欧美在线视频免费 | 午夜精品影院 | 在线观看黄污 | 毛片基地黄久久久久久天堂 | 天天干夜夜爱 | 天天干天天干天天 | 精品久久久久久久久久 | 视频一区亚洲 | 欧美激情第八页 | 日韩电影一区二区三区 | 在线观看免费黄视频 | 最近日本mv字幕免费观看 | 国产不卡免费 | 亚洲aⅴ在线 | 四虎永久国产精品 | 国产一线天在线观看 | 黄色免费观看 | 西西444www大胆无视频 | 久久国产亚洲 | 日韩手机视频 | 久久久高清视频 | 黄色大片av | 狠狠狠狠干 | 国产淫a| 97偷拍在线视频 | 国产精品电影在线 | 国产精品久久久999 国产91九色视频 | 狠狠网站 | 玖玖999| 久久精品国产亚洲 | 伊人伊成久久人综合网小说 | 亚洲va韩国va欧美va精四季 | 免费av网站在线看 | 久久精品免费播放 | 天天干天天干天天干 | 波多野结衣在线观看视频 | 亚洲精品播放 | 三日本三级少妇三级99 | 国产精品久久久久久久99 | 成人国产网址 | 午夜99| 国产成人精品久久亚洲高清不卡 | 超碰在线97免费 | 中文字幕亚洲欧美日韩 | 精品国内自产拍在线观看视频 | 亚洲欧洲日韩在线观看 | 免费看三级 | 日韩精品在线看 | 亚洲免费av网站 | av大片网址 | 人人草人| 在线观看黄网站 | 免费av成人在线 | 91精品老司机久久一区啪 | 国产欧美精品在线观看 | 天天激情天天干 | 久久夜色网 | 日韩欧美网站 | 免费看片亚洲 | 日本久久免费视频 | 天天躁日日躁狠狠 | www最近高清中文国语在线观看 | 干干日日 | av成年人电影 | 五月天激情在线 | 欧美天堂久久 | 国产视频在线观看免费 | 国产亚洲一区 | 天天操天天干天天摸 | 午夜精品一区二区三区在线 | 探花视频免费观看高清视频 | 最新av免费在线观看 | 亚洲高清不卡av | 97偷拍视频| 久久精品视频播放 | 国产精品毛片久久 | 久色伊人 | 在线视频一区观看 | 亚洲精品中文在线资源 | 91网站在线视频 | 久草在线免费色站 | 成人欧美在线 | 成年人在线免费看视频 | 99视频 | 中文在线免费一区三区 | 中文字幕在线电影 | 在线观看精品黄av片免费 | 亚洲最大成人网4388xx | 中文字幕视频免费观看 | 日韩亚洲精品电影 | 98超碰在线观看 | 欧美伊人网 | 丁香婷婷社区 | 国产福利91精品一区二区三区 | 看片黄网站 | 超碰在线国产 | 在线日本看片免费人成视久网 | 在线 精品 国产 | 久久久久久国产精品久久 | 天天拍天天操 | 精品一区二区综合 | 国产精品123| 久久麻豆视频 | 在线国产一区二区三区 | 日本精品视频一区 | 亚洲精品视频一二三 | 精品国产乱码久久久久久三级人 | av电影一区| 日韩欧美一区视频 | 色播六月天 | 国产亚洲精品bv在线观看 | 麻豆94tv免费版 | 国产成人1区| 亚洲第一香蕉视频 | 综合网天天射 | 中文字幕频道 | 美女国产 | 国产 日韩 欧美 在线 | 91爱在线| 91精品国产99久久久久久久 | 日日干综合 | 亚州av网站| 国产一区国产精品 | 五月综合激情网 | 国产精品日韩欧美一区二区 | 一级黄色在线视频 | 五月天激情电影 | 看黄色.com | 成人免费观看视频大全 | 爱爱av网站| 午夜在线观看影院 | 中文字幕国产在线 | 久久久久久久久毛片精品 | 久久综合中文色婷婷 | 99在线免费观看视频 | 久久久久久久久久国产精品 | 久久公开视频 | 亚洲激情在线视频 | 91精品久久久久久久久久入口 | 国产又粗又猛又黄又爽视频 | 国产成人精品综合久久久久99 | 黄色影院在线播放 | 国产原厂视频在线观看 | 麻豆视频在线播放 | 国产一区二区高清视频 | 日韩色在线观看 | 欧美日韩国产在线一区 | 99视频在线免费看 | 黄色一区三区 | 亚洲高清网站 | 欧美大片在线看免费观看 | 成人毛片a | 日韩精品免费在线观看视频 | 欧美伦理一区二区 | 99久久精品无码一区二区毛片 | 免费h视频| 国产亚洲成av人片在线观看桃 | 国产色资源 | 在线观看完整版 | 欧美日韩中文在线视频 | 日韩.com | 91九色在线视频 | 国产麻豆视频在线观看 | 五月婷丁香 | 96久久欧美麻豆网站 | 国产麻豆精品久久 | 久久激情综合网 | 国产日韩欧美在线影视 | 久久国色夜色精品国产 | 涩涩网站在线看 | 国产精品久久久久久久久费观看 | 成人羞羞视频在线观看免费 | 99久久婷婷国产综合亚洲 | 黄色小说视频网站 | 欧美日韩国产一区二区三区 | 午夜电影久久久 | 91桃色在线免费观看 | 亚洲一区二区三区毛片 | 欧美粗又大 | 国产精品女人久久久 | 在线视频观看91 | 精品久久久久久国产偷窥 | 亚洲日本在线视频观看 | 999成人精品 | 一区二区三区日韩视频在线观看 | 国产丝袜网站 | 日韩二区在线观看 | 可以免费观看的av片 | 91视频最新网址 | 成人av资源网 | 成人91免费视频 | 成人在线视频观看 | 少妇精品久久久一区二区免费 | 免费久久99精品国产 | 91麻豆精品一区二区三区 | 亚洲一区二区视频在线 | 中国一级片在线播放 | 中文字幕av网站 | 永久av免费在线观看 | 欧美巨乳波霸 | 久久精品韩国 | 日韩深夜在线观看 | 人人插人人插 | 日韩黄色免费 | 久久久69| 99热最新| 欧美经典久久 | 国产亚洲综合性久久久影院 | 激情五月综合网 | av高清一区 | 天天草天天操 | 麻豆影视在线免费观看 | 国产特级毛片aaaaaa毛片 | 午夜99|