我在 Oracle 11g 上,我们有以下 3 个核心表:
Customer - CUSTOMERID|DOB
CustomerName - CUSTOMERNAMEID|CustomerID|FNAME|LNAME
Address - ADDRESSID|CUSTOMERID|STREET|CITY|STATE|POSTALCODE
我在每个表上都有大约 6000 万行,数据是美国和加拿大人口的混合体。
我有一个调用 Web 服务的前端应用程序,他们执行姓氏和部分 zip 搜索。所以我的查询基本上有
where CUSTOMERNAME.LNAME = ? and ADDRESS.POSTALCODE LIKE '?%'
它们通常提供 zip 的前 3 位数字。
地址表在所有街道/城市/州/邮编上都有一个索引,在州和邮编上还有一个索引。
我确实尝试为 zip 添加专门的索引,并强制 oracle 在我的查询中使用该索引,但这没有任何区别。
返回大约 100 行(我的分页一次只返回 100 行)大约需要 30 秒,这并不理想。我能做些什么来让这变得更好?